将同一个TableViewController多次推送到导航堆栈

时间:2016-10-04 15:29:14

标签: ios objective-c swift uitableview uinavigationcontroller

对于我的应用程序,我需要多次推送相同的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?
  }

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

当您创建这样的新实例时:

let newMyTableVC = MyTableVC()

它完全独立于故事板。重要的是,因此它对故事板中定义的原型单元一无所知。因此,错误的相关位是“......或者在故事板中连接原型单元”。

要避免此问题,请在情节提要中为表视图控制器设置标识符,然后使用:

let newMyTableVC = self.storyboard!.instantiateViewControllerWithIdentifier("identifier") as! MyTableVC