2017-04-14 36 views
1

當我登錄到我的應用程序時,Home viewcontoller未出現,並且在解包可選項時出現意外發現的錯誤。這真的激怒了我,但是我沒有發現任何語法錯誤。
登錄視圖控制器按下登錄按鈕時,視圖控制器沒有實例化爲Home VC

@IBAction func loginAction(_ sender: Any) { 
let vc : UIViewController = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
self.present(vc, animated: true, completion: nil) 
} 

主頁視圖控制器

import UIKit 
class ViewController: UIViewController { 
@IBOutlet weak var mainHomeButton: UIBarButtonItem! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    mainHomeButton.target = SWRevealViewController() 
    mainHomeButton.action = #selector(SWRevealViewController.revealToggle(_:)) 
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
} 
} 

Architacture
enter image description here

+1

你的UIViewController標識符是否正確? – Rikh

+1

你可以發佈堆棧跟蹤嗎? – Jonathan

+0

是的,您的標識符應該在故事板和該UIViewController的引用類中相同。 –

回答

1

檢查,如果你的SWRevealViewController不在viewDidLoad()

if self.revealViewController() != nil { 
     mainHomeButton.target = self.revealViewController() 
     mainHomeButton.action = #selector(SWRevealViewController.revealToggle(_:)) 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 

更新

你的故事板結構,無需要修改。 您應該在點擊登錄按鈕時顯示您的SWRevealViewController,而不是View Controller。

在故事板賽格瑞應該鏈接是這樣的:

  1. 登錄按鈕 - > SWRevealViewController
  2. SWRevealViewController(sw_front) - >家VC的導航controlller
  3. SWRevealViewController(sw_rear) - >菜單控制器

希望它有幫助。快樂編碼:)

+0

thanx @dory我使用它顯示空白的白色屏幕 –

+0

我應該提前做什麼? –

+0

我有一種類似的結構,你的故事板結構似乎不合適。你的前面的VC應該是你的菜單。 – Dory

-1

嘗試,而不是這樣做:

@IBAction func loginAction(_sender: Any){ 
    let vc = ViewController() 
    present(vc, animated: true, completion: nil) 
} 
+1

這是錯誤的,因爲視圖控制器元素不會被初始化,並且一旦碰到viewDidLoad(),就很可能會崩潰。他需要像上面一樣使用instantiateViewController。 – Armin

+0

我不使用Storyboard,所以我不確定它是如何工作的。我的壞 – iDeveloper

1
  • self.storyboard可能是nil
  • 該標識符可能不會引用任何視圖控制器。
  • 標識符可以引用不是類型爲ViewController的視圖控制器。
  • mainHomeButton插座可能沒有連接。
+0

一切都設置好 –

+1

至少有一件事是不正確的。單獨驗證每一個。記錄'self.storyboard'。記錄'instantiateViewController'的結果而不強制轉換它。記錄'mainHomeButton'。 – Jim

+0

我應該怎麼做'Log mainHomeButton' –

相關問題