2016-11-14 54 views
0

添加一個初始化到一個視圖控制器導致的出口是零我有一個視圖控制器如下:在viewDidLoad中

class TutorialPageViewController: UIViewController, UIPageViewControllerDelegate 
    { 
     @IBOutlet weak var pageControl: UIPageControl! 
     var tutorialCategory = TutorialCategory.enableShareContact 

     override func viewDidLoad() 
     { 
      super.viewDidLoad() 
      self.pageViewController.dataSource = self 
      self.pageViewController.delegate = self 
      pageControl.numberOfPages = 5 

    ... 

此運行沒有問題,加入一個初始化所述的PageControl出口之後然而現在NIL在viewDidLoad導致異常。這是添加了初始化:

init(tutorialCategory: TutorialCategory) 
{ 
    super.init(nibName: nil, bundle: nil) 
    self.tutorialCategory = tutorialCategory 
} 

convenience required init(coder aDecoder: NSCoder) 
{ 
    self.init(tutorialCategory: TutorialCategory.enableShareContact) 
} 

爲什麼添加具有使IBOutlet中現在變成零的這種效果的初始化,如何解決呢?

(我嘗試添加到內viewDidLoad中VC的看法調用試圖強行加載出口,但它沒有任何效果)

回答

0

因爲出口是通過設置super.init(coder aDecoder: NSCoder),你不再調用。

你可能想:

required init(coder aDecoder: NSCoder) { 
    self.tutorialCategory = .enableShareContact 
    super.init(coder: aDecoder) 
} 

不要覆蓋它作爲一種方便的init。