2017-07-26 82 views
0

我有滚动视图IBOutlet中和的功能的HomeView类的滚动视图的变化的偏移存取方法时:滚动视图setContentOffset崩溃从另一个文件

scrollView.setContentOffset(CGPoint(x: self.view.frame.width * 2, y: 0), animated: true) 

从FeedView I类尝试:

let Home = HomeView() 
Home.ScrollRight() 

但我得到这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value 
+2

这是错误的!你为什么试图这样做?,您正在创建'HomeView'的新实例 –

+0

我有多个视图控制器子查看页面样式导航,并希望有一个按钮滚动。如何在不创建新的HomeView实例的情况下访问该函数? –

+0

您是否可以添加一些可能很容易遇到的代码 –

回答

1

因为你HomeView由XIB或故事板创建。这就是为什么下面的行返回nil对象。

let Home = HomeView() 

如果你想从另一个类调用HomeViewScrollRight()方法则声明的HomeView全局变量像

var homeVC = HomeView() 

,并在HomeView

homeVC = self as HomeView 

viewDidMethod不是你可以访问homeVC从任何地方

,只是从其他的viewController调用方法,通过

homeVC.ScrollRight() 

=======================================
EX

import UIKit 
var homeVC = HomeVC() 

class HomeVC: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     homeVC = self as HomeVC 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

现在您可以在任何地方使用homeVC对象和HomeVC的访问属性。

注: 如果要调用函数从相同的viewController (HomeView)那么你并不需要创建的viewController的对象。您可以直接简单地通过以下方式调用函数。

ScrollRight() OR self.ScrollRight()

+0

在HomeView中,您有“homeVC = self作为HomeView”我得到一个错误的身份不明的家庭VC –

+0

您是否在下面的“var homeVC = HomeView()导入“声明”HomeView“? – Govaadiyo

+0

是同样的错误。 –

0

如果你的滚动视图设置为一个出口这意味着它是您的视图控制器的主视图中当所述视图控制器是从故事板实例创建。

此代码:

let Home = HomeView() 

...最多实例化视图控制器本身,但它不会加载其视图(更不用说线的网点-in这种情况下,适当的子视图,滚动视图)。

请阅读关于视图控制器视图生命周期。这一切都在Apple的编程指南和无数的在线教程中。