Ios 多次将同一TableViewController推入导航堆栈

Ios 多次将同一TableViewController推入导航堆栈,ios,objective-c,swift,uitableview,uinavigationcontroller,Ios,Objective C,Swift,Uitableview,Uinavigationcontroller,对于我的应用程序,我需要多次推送同一个TableViewController。当用户点击didSelect时,我需要在导航堆栈中推送相同的控制器 我的应用程序是文件管理器应用程序,它连接到ftp服务器并向用户显示其中的内容。但文件夹中可能有包含更多文件夹(无限)的文件夹 为此,我无法在情节提要中创建大量TableViewController,当我尝试使用以下命令将同一个控制器推入导航堆栈时: navigationController?.pushViewController(self, anima

对于我的应用程序,我需要多次推送同一个TableViewController。当用户点击didSelect时,我需要在导航堆栈中推送相同的控制器

我的应用程序是文件管理器应用程序,它连接到ftp服务器并向用户显示其中的内容。但文件夹中可能有包含更多文件夹(无限)的文件夹

为此,我无法在情节提要中创建大量TableViewController,当我尝试使用以下命令将同一个控制器推入导航堆栈时:

navigationController?.pushViewController(self, animated: true)
我得到的错误是我不能在导航堆栈中推送相同的控制器。 因此,我创建了控制器的新实例,并尝试按如下方式推送:

let newMyTableVC = MyTableVC()
让newMyTableVC=MyTableVC()
navigationController?.pushViewController(newMyTableVC,动画:true)

但有了这个,我也得到了一个错误,那就是:

'无法将标识符为FolderCell的单元格出列-必须为标识符注册nib或类,或连接情节提要中的原型单元格'

因此,我从这个错误中了解到,我的第一个TableViewController使用了我的单元格标识符,它位于内存中。当我试图用相同的单元格标识符传递TableViewController的新实例时,它崩溃了,因为单元格已经存在并具有相同的标识符。(我可能错了)


感谢您的时间。

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

let newMyTableVC = MyTableVC()
它完全独立于情节提要。重要的是,它因此对故事板中定义的原型单元一无所知。因此,相关的错误位是“……或连接故事板中的原型单元”

要避免此问题,请在序列图像板中设置表视图控制器的标识符,然后使用:

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

为什么每次都要创建一个新的控制器,而不只是更改数据集以匹配当前目录的数据集?然后使用TableView的reloadData()功能?这是一个非常好的方法。为表视图控制器提供一个情节提要id,并使用self.storyboard instanceeviewcontrollerwithid进行实例化。嘿,伙计们,谢谢你们的回复。我每次都需要创建新的控制器,因为我希望用户能够从缓存中的最后一个文件夹视图控制器返回,而无需等待新的网络请求和重新加载tableView。此外,当用户点击单元格,而您重新加载数据而不是将新的视图控制器推入导航堆栈时,这也是一种糟糕的用户体验。谢谢您的回答,它工作得非常好。我从来没有这样想过,即使我用过很多次这种方法。这就是我在故事板中需要视图控制器实例时应该使用的方法吗?@YasinNazlıcan是的,如果你想使用故事板中的设计和布局,你必须使用InstanceEviewController标识符或使用segue。