Swift:创建一个可选的IBOutlet

时间:2017-05-14 06:08:53

标签: ios swift uiviewcontroller swift3 iboutlet

我正在编写一个UIViewController供其他人继承。这个UIViewController里面有一个UIScrollView。目前,我创建了这样的UIScrollView:

scrollView.contentSize = CGSize(width: viewWidth * 2, height: viewHeight)
scrollView.delegate = self
view.addSubview(scrollView)
view.sendSubview(toBack: scrollView)

这是有效的,但为了使UIViewController可扩展,我希望能够拥有一个IBOutlet,人们可以将它们的UIScrollViews连接到故事板。

如果有人通过故事板连接了UIScrollView,我会使用该scrollView。否则,我会自己使用上面的代码制作它。

我之前在图书馆看过这个,但是不记得图书馆,所以我无法参考如何去做。

2 个答案:

答案 0 :(得分:2)

只需创建一个插座:

@IBOutlet var scrollView: UIScrollView!

viewDidLoad中,如果scrollViewnil,则表示插座未连接。您可以使用简单的if语句来检查:

if scrollView == nil {
    scrollView = UIScrollView(...)
    scrollView.contentSize = CGSize(width: viewWidth * 2, height: viewHeight)
    scrollView.delegate = self
    view.addSubview(scrollView)
    view.sendSubview(toBack: scrollView)
}
// do the things you want to do with the scroll view here.

答案 1 :(得分:0)

Sweeper 的回答是正确的,但就个人而言,这不是必需的 - 如果您愿意的话,不是“swifty”。

在 IBOutlet 中,只需将 ! 替换为 ?。那就行了。最简单。我不得不对其进行测试以确保它正常工作。