对于我的应用程序,我需要多次推送相同的TableViewController。当用户点击didSelect时,我需要在导航堆栈中推送相同的控制器。
我的应用程序是文件管理器应用程序,它连接到ftp服务器并向用户显示内部的内容。但是文件夹中可能有文件夹包含更多文件夹(无限)。
为此,我无法在故事板中创建大量的TableViewControllers,当我尝试将相同的控制器推入导航堆栈时:
navigationController?.pushViewController(self, animated: true)
我得到错误说我无法在导航堆栈中推送相同的控制器。 所以我创建了我的控制器的新实例并尝试像这样推动:
let newMyTableVC = MyTableVC()
navigationController?.pushViewController(newMyTableVC, animated: true)
但有了这个我也得到错误说:
'无法使用标识符FolderCell对单元格进行出列 - 必须为标识符注册一个nib或类,或者在故事板中连接原型单元格'
所以我从这个错误中理解我的第一个TableViewController使用我的单元格标识符并且它在内存中。当我尝试使用相同的单元格标识符传递我的TableViewController的新实例时,它崩溃了,因为单元格已经存在,具有相同的标识符。(我可能是错的)。
If i am on right track doing this with approach at the above {
How do i reuse cells with dynamic identifier and provide data to them.
} else {
How do i accomplish what i want?
}
感谢您的时间。
答案 0 :(得分:1)
当您创建这样的新实例时:
let newMyTableVC = MyTableVC()
它完全独立于故事板。重要的是,因此它对故事板中定义的原型单元一无所知。因此,错误的相关位是“......或者在故事板中连接原型单元”。
要避免此问题,请在情节提要中为表视图控制器设置标识符,然后使用:
let newMyTableVC = self.storyboard!.instantiateViewControllerWithIdentifier("identifier") as! MyTableVC