如何使用 Swift 构建 ScrollView?

2024-01-06

我正在构建我的第一个 IOS 应用程序,我正在努力寻找一种方法来使用 XCode6 上的 Swift 代码做一个简单的 ScrollView,请问有人可以帮助我找到解决方案吗?

我的问题是我不知道如何使滚动视图在我的代码中工作。我已经将代码放入 ViewController.swift 中,如下所示,我希望能够在 Main.storyboard 中为 ViewController 选择 Outlet“scroller”,而不是我收到错误*"fatal error: Can't unwrap Optional.None (lldb)"* EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)

我有一些 ViewController 屏幕,在其中一个屏幕中我放置了一个 ScrollView,我想让它使用 Swift 工作。

我被困在这一点上:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var scroller:UIScrollView

    override func viewDidLoad() {
        super.viewDidLoad()
        scroller.scrollEnabled = true;
        scroller.contentSize = CGSizeMake(320, 624);
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

我认为如果有人可以提供一个简单的示例如何使用 swift 进行滚动视图,它将解决我的问题。任何帮助都是值得赞赏的。

尝试以旧方式执行此操作,我尝试使用 .m 和 .h 文件来执行此操作:

视图控制器.m

#import "Amigo-Bridging-Header.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [scroller setScrollEnabled:YES];
    [scroller setContentSize:CGSizeMake(320, 624)];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Amigo-Bridging-Header.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    IBOutlet UIScrollView *scroller;
}
@end

Cheers


让我们尝试一下。需要注意的一件事是我还没有找到一种方法将 self.view 向下转换为 UIScrollView,因此您无法进行像 self.view.contentOffset 这样的调用。

import UIKit

class ScrollingViewController : UIViewController {
    // Create a scrollView property that we'll set as our view in -loadView
    let scrollView = UIScrollView(frame: UIScreen.mainScreen().bounds)

    override func loadView() {
        // calling self.view later on will return a UIView!, but we can simply call 
        // self.scrollView to adjust properties of the scroll view:
        self.view = self.scrollView

        // setup the scroll view
        self.scrollView.contentSize = CGSize(width:1234, height: 5678)
        // etc...
    }

    func example() {
        let sampleSubView = UIView()
        self.view.addSubview(sampleSubView) // adds to the scroll view

        // cannot do this:
        // self.view.contentOffset = CGPoint(x: 10, y: 20)
        // so instead we do this:
        self.scrollView.contentOffset = CGPoint(x: 10, y: 20)
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Swift 构建 ScrollView? 的相关文章

随机推荐

  • 符合标准的方式来定义我的枚举

    在没有明确正确确定枚举范围的情况下 如何摆脱警告 符合标准的代码将与foo bar mUpload see here https stackoverflow com questions 514194 using enum inside ty
  • 值得学习使用 MSBuild 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我只是想知道人们是否认为值得学习使用 MSBuild 语法来自定义 net 项目的构建过程 或者考虑到使用 Visual Studio 构建项目
  • 对 javascript 中的“this”关键字感到困惑

    我已经很长时间没有使用 Javascript 了 今天又重新学习了它 一直让我着迷的一件事是this关键词 我知道在 jQuery 事件处理程序中 例如单击事件 this指的是触发事件的元素 怎么this传递给我作为回调提供的函数 即使我的
  • 在 bash 调试运行期间隐藏信息

    我们在 shell 脚本中进行 debug run bash x my script sh 来了解 显示它正在做什么 但这样做可能会显示一些我不想看到的敏感信息 例如密码 我的脚本从安全保管库中提取密码 并在需要时将其作为脚本中的变量传递
  • 当用户在 scanf() 中输入错误的数据类型时如何修复无限循环?

    C初学者在这里 对于下面的程序 每当用户输入字符或字符串时 它就会进入无限循环 在仍然使用 scanf 的情况下如何解决这个问题 与使用 scanf 相比 编写该程序的更好方法是什么 感谢那些愿意回答的人 include
  • 在 MATLAB 中将频谱图保存为图像

    我正在使用以下方法分析一些声音片段spectrogram 函数于MATLAB 我想将频谱图保存为图像 jpg png 等 但无论我以什么图像格式保存图形 生成的图像总是与我在图中看到的不同 参差不齐 这是频谱图的示例 Matlab图 htt
  • 为什么我的基本 PyGame 模块这么慢?

    我计划在 Pygame 中编写代码 但我刚刚开始学习基础知识 发现执行代码非常慢 当我按下一个键时 它需要一段时间才能在终端中打印它 似乎没有任何模式 我正在运行Python 2 6 遇到这个问题后我降级了 通过进一步的测试我发现整个系统变
  • ProtoIninclude 添加了不需要的依赖项

    我刚刚在分布式缓存应用程序中用协议缓冲区替换了 NET 序列化 结果确实令人印象深刻 我唯一不喜欢的是 我需要在基本消息类及其子类之间添加依赖关系 这会创建循环依赖关系 除了用 ProtoInclude 标记基类之外 还有其他选择吗 In
  • C# 将文本文件分割成二维字符串数组

    我有一个如下所示的文本文件 John Gauthier blue May Henry Ford Red June James Bond Orange December 我想将它分成一个二维字符串数组 这样我就可以将每一行和每个单词分开 前任
  • 缓存失效——有通用的解决方案吗?

    计算机科学中只有两个难题 缓存失效和命名 菲尔 卡尔顿 是否有通用的解决方案或方法来使缓存失效 知道条目何时过时 以便保证您始终获得最新数据 例如 考虑一个函数getData 从文件中获取数据 它根据文件的上次修改时间对其进行缓存 每次调用
  • Rails、设计身份验证、CSRF 问题

    我正在使用 Rails 制作一个单页应用程序 登录和注销时 使用 ajax 调用 Devise 控制器 我遇到的问题是 当我 1 登录 2 注销然后再次登录时不起作用 我认为这与 CSRF 令牌有关 当我注销时 该令牌会被重置 尽管它不应该
  • symfony2 - 获取执行时间

    我想使用 symfony2 为我的应用程序制作一个状态页 我想在其中打印特定请求的执行时间 以及其他数据 无论如何我找不到这样做 我知道我可以通过以下方式跟踪代码部分的执行时间 starttime microtime do somethin
  • Mysql 带游标的存储过程

    Mysql游标问题 我编写了一个存储过程 它将从一个表中获取旅行记录并将其插入到 2 3 个不同的表中 使用插入语句 问题是我正在检查 table1 中是否不存在记录 然后我将记录从 temptable 顺序插入到 table1 table
  • PHP - 检查一个字符串是否是另一个字符串的旋转

    需要编写一个代码块来检查一个字符串是否是另一个字符串的旋转 看了这里的大量帖子 都是用 Java 或 C 写的 但我需要用 PHP 来做 我尝试了一些不同的方法 尝试使用 C 和 Java 示例 但我没有任何运气 这是我当前的代码
  • bx滑块启动/停止功能

    我正在使用 bxslider 插件 并为上一个和下一个功能创建了一些外部控件 尽管我似乎不知道如何对启动 停止控件执行相同的操作 基本上我想用它作为滑块的播放 暂停功能 有人有这个插件的经验吗 这是我到目前为止所拥有的 没有启动 停止功能工
  • 跨域图片上传 Angular+laravel

    我一直在努力在服务器上上传图像 我在用ng文件上传 https github com danialfarid ng file upload在前端 但我总是得到 对预检请求的响应未通过访问控制检查 请求的资源上不存在 Access Contr
  • 如何在 Ruby 中解析带有单引号 (') 的 JSON 字符串?

    我正在尝试解析这样的 JSON 字符串 JSON parse foo 42 但是 这会产生 JSON ParseError JSON ParserError 757 unexpected token at foo 42 from Users
  • 更新插入文档和/或添加子文档

    我一直在努力解决 MongoDB Mongoose 和 JavaScript 的异步特性以及如何最好地对集合进行多次更新 我有一张包含客户和联系人数据的 Excel 表格 有些客户端有多个联系人 每行一个 并且客户端数据是相同的 因此客户端
  • 运行 Leiningen 时出现 java.lang.NoSuchMethodError:clojure.lang.KeywordLookupSite

    我刚刚下载了 Leiningen 但无法运行它 下载自己的 Jar 存档后 脚本失败并出现 java 错误 通过跑步bash x lein我可以看到它挂在这一行 exec java Xbootclasspath a home andrea
  • 如何使用 Swift 构建 ScrollView?

    我正在构建我的第一个 IOS 应用程序 我正在努力寻找一种方法来使用 XCode6 上的 Swift 代码做一个简单的 ScrollView 请问有人可以帮助我找到解决方案吗 我的问题是我不知道如何使滚动视图在我的代码中工作 我已经将代码放