寻找新版本的当前视图控制器

时间:2016-01-02 20:30:22

标签: ios objective-c iphone storyboard uistoryboardsegue

在热门应用Instagram中,当您点击用户时,它会显示他们的个人资料。如果您点击其他用户名(可能是对照片的评论),则会显示第二人的个人资料。

我正在尝试使用Objective-C和Storyboard实现类似的功能。我有你可以考虑的帐户页面,在该页面内是其他用户。我可以访问一个帐户页面,但是我遇到了在Instagram等应用程序中看到的无穷无尽的帐户页面,其中一个原因是您无法对同一个视图控制器执行segue。当您从帐户页面中点击新用户时,我尝试通过以编程方式呈现新帐户页面来绕过它,但我遇到了很多错误。

我可以通过多种方式实现相同视图控制器的无尽流式(显然我使用的是navigationController,因为这可能会被问到我)。

编辑使用@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上,而是出现在前一个单元格上。不确定我是如何加载单元格或解决方案的问题。

2 个答案:

答案 0 :(得分:0)

单击链接/按钮时,您需要将视图控制器推送到UINavigationController而不是使用segue。因此,当您的方法被调用时,您可以编写

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")
    }
 }

答案 1 :(得分:0)

只需对相同的视图控制器进行segue。下面是一个按钮的示例,该按钮可以分割到它所在的视图控制器(的另一个副本)。

enter image description here