0
我有以下init
方法在我的视图控制器:在super.init呼叫物业未初始化
init(mainViewController: UIViewController, settingsViewController: UIViewController, gap: Int) {
self.mainViewController = mainViewController
self.settingsViewController = settingsViewController
self.gap = gap
self.setupScrollView() // I get error here
super.init(nibName: nil, bundle: nil) //and here.
}
为self.setupScrollView
方法现在看起来就像这样:
func setupScrollView() {
self.scrollView = UIScrollView(frame: CGRectZero)
self.scrollView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(self.scrollView)
}
我得到的错误是:
self used before super.init call
和Property 'self.scrollView' not initialized at super.init call
我看过类似的帖子,没有任何运气。任何帮助,将不胜感激!
这奏效了,谢谢!但为什么这是必要的?另外我虽然当一个参数是可选的,你应该这样调用它:'scrollView!.setTranslatesAutoresizingMaskIntoConstraints(false)'并且不强制解包它? –
我的意思是调用它像这样,而不是:'滚动视图.setTranslatesAutoresizingMaskIntoConstraints(假)' –
这是行不通的,因为编译器是不知道,如果该值不为零?通过使用'!'你认为它不是零。如果您无法确定,请在展开前进行额外的检查。 – Adam