我有一个带有scrollView IBOutlet的HomeView类和一个更改scrollView偏移量的函数:
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * 2, y: 0), animated: true)
从我尝试的FeedView类:
let Home = HomeView()
Home.ScrollRight()
但是我收到了这个错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
答案 0 :(得分:1)
因为您的HomeView
由XIB或Story板创建。这就是为什么下面的行返回nil
对象。
let Home = HomeView()
如果您想从另一个类调用ScrollRight()
HomeView
方法,则声明HomeView
的全局变量
var homeVC = HomeView()
和viewDidMethod
的{{1}}
HomeView
您无法从任何地方访问homeVC = self as HomeView
只需通过
调用方法homeVC
来自另一个viewController。
=======================================
的 EX 强>
homeVC.ScrollRight()
现在,您可以在任何地方使用import UIKit
var homeVC = HomeVC()
class HomeVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
homeVC = self as HomeVC
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
对象并访问homeVC
的属性。
注意:强> 如果从同一个viewController (HomeView)调用函数,则不需要创建该viewController的对象。您可以直接通过以下方式直接调用函数。
HomeVC
或ScrollRight()
答案 1 :(得分:0)
如果您的滚动视图设置为插座,则表示当所述视图控制器从故事板实例化时,它在视图控制器的主视图中创建。
此代码:
let Home = HomeView()
...最多实例化视图控制器本身,但它不加载其视图(更不用说将出口连接到相应的子视图 - 在这种情况下,滚动视图)。
请阅读有关视图控制器视图生命周期的信息。它完全出现在Apple的编程指南和无数的在线教程中。