转到当前视图控制器的新版本

Segue to a new version of the current view controller

在流行的应用程序 Instagram 中,当您单击用户时,它会显示他们的个人资料。如果你点击另一个用户的名字(可能是在照片的评论中),那么它会显示第二个人的个人资料。

我正在尝试使用 Objective-C 和 Storyboard 实现类似的效果。我有一个您可以考虑的帐户页面,该页面内有其他用户。我可以进入一个帐户页面,但我 运行 遇到了在 Instagram 等应用程序中看到的无穷无尽的帐户页面流,原因之一是您无法对同一视图执行 segue控制器。我试图通过在您从帐户页面中单击新用户时以编程方式显示新帐户页面来解决这个问题,但我 运行 遇到很多错误。

有什么方法可以实现相同视图控制器的无尽流(显然我使用的是 navigationController 因为可能有人会问我)。

EDIT 使用@tmac_balla 提供的解决方案(感谢您的帮助)我可以继续使用新的 tableview 但是 tableView 为空白,我收到以下错误消息。

*** Assertion failure in -[UITableView     _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-  3512.30.14/UITableView.m:7962
2016-01-02 17:06:46.765 Quoter[1631:845864] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView (<UITableView: 0x146096000; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1456c19b0>; layer = <CALayer: 0x1456c0330>; contentOffset: {0, -64}; contentSize: {320, 400}>) failed to obtain a cell from its dataSource (<_UIFilteredDataSource: 0x145727b20>)'

编辑 2 使用@Daniel T 提供的解决方案。我能够将新的视图控制器推送到导航堆栈和非 tableView 部分控制器工作正常,但是当涉及到 tableView 中的单元格时,我(在我的简短测试中)看到了这样一种情况,即单元格没有出现在新的 tableView 中,而是出现在前一个单元格中。不确定这是否只是我加载单元格的错误或解决方案的问题。

单击 link/button 时,您需要做的是将视图控制器推送到 UINavigationController 中,而不是使用 segues。所以当你的方法被调用时,你写

accountViewController account = accountViewController()
account.someTextField.text = "someText"
self.navigationController.pushViewController(account, animated: YES);

它创建了相同 VC 的新实例并将其推送到屏幕。

关于错误,尝试检查单元格是否存在,如果不存在则初始化

    var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell

    if (cell == nil) {
        cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
    }
 }

只需转至同一个视图控制器即可。这是一个按钮的示例,该按钮转到它所在的视图控制器(的另一个副本)。