2016-03-22 90 views
1

在我目前的XCode項目中,我有兩個視圖控制器。第一個,初始視圖控制器,只有一個按鈕。第二個視圖控制器是UITableViewController的子類。我在故事板中定義了一個自定義表格視圖單元格,爲其提供了一個重用標識符,並定義了一個自定義類並將相關的IBOutlet連接起來。UITableViewCell故事板註冊取決於初始視圖控制器?

啓動應用程序後,當按下按鈕時,第二個視圖控制器將通過self.presentViewController(secondViewController, animated: true, completion: nil)在第一個視圖控制器上模態呈現。這兩個視圖控制器沒有通過segue連接到故事板。此模態SEGUE之後,表的構造期間,它與錯誤崩潰:

'unable to dequeue a cell with identifier PlaylistCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

然而,當表視圖控制器是初始視圖控制器,它不會崩潰並顯示所有數據的正確。我想知道如果筆尖註冊依賴於通過故事板連接到初始視圖控制器的視圖控制器?

編輯:我想通了我的錯誤。對於誰發現自己在這個問題其他人,我初始化我的第二個視圖控制器,如:

let vc = SecondViewController()

但是你並初始化像這樣,如果你通過故事板設計它:

let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("SecondViewController")

回答

0

正如你所想的那樣,你必須通過在故事板中識別它來實例化表格視圖控制器。

如果第二個控制器的故事板是一樣的第一個,你可以這樣做,以及:

if let storyboard = self.storyboard, controller = storyboard.instantiateViewControllerWithIdentifier("Second") as? UITableViewController { 
    self.presentViewController(controller, animated: true, completion: nil) 
} 

這樣你就不必硬編碼故事板的名稱,你可以確保故事板和視圖控制器不是零,並且可以呈現。

相關問題