2016-03-22 61 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) 
} 

这样你就不必硬编码故事板的名称,你可以确保故事板和视图控制器不是零,并且可以呈现。

相关问题