2017-07-26 87 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的編程指南和無數的在線教程中。