scrollView setContentOffset从另一个文件访问方法时崩溃

时间:2017-07-26 04:51:08

标签: ios swift swift3 uiscrollview uikit

我有一个带有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

2 个答案:

答案 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的对象。您可以直接通过以下方式直接调用函数。

HomeVCScrollRight()

答案 1 :(得分:0)

如果您的滚动视图设置为插座,则表示当所述视图控制器从故事板实例化时,它在视图控制器的主视图中创建。

此代码:

let Home = HomeView()

...最多实例化视图控制器本身,但它不加载其视图(更不用说将出口连接到相应的子视图 - 在这种情况下,滚动视图)。

请阅读有关视图控制器视图生命周期的信息。它完全出现在Apple的编程指南和无数的在线教程中。