【问题标题】:Coming back from a push view without a UINavigationController and a back button, is it possible?从没有 UINavigationController 和后退按钮的推送视图返回,有可能吗?
【发布时间】:2013-12-29 12:44:31
【问题描述】:

我有一个ViewController,例如startingScreenViewController。我有一个从这个视图上的项目到另一个视图 (someViewController) 的推送,这是一个 ViewController,其中有一个 TableView(当然不是 TableViewController)。现在,没有后退按钮,我想通过点击表格视图中的单元格返回第一个视图。我已经写了我的单元代表:

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
}

我尝试过使用

[self.navigationController popViewControllerAnimated:YES];

显然它没有用,因为我没有navigationController。我什至试图重新回到startingScreenViewController,这是一件愚蠢的事情,也没有奏效。

我需要一些帮助,我们将不胜感激。

【问题讨论】:

  • 我已经检查了测试项目,如果您尝试在没有UINavigationController 的情况下执行推送 segue,您的应用程序将崩溃并出现错误:'推送 segues 只能在源控制器由实例管理时使用UINavigationController.'。所以要么你有UINavigationController,要么它不是推动segue

标签: ios iphone objective-c cocoa-touch uitableview


【解决方案1】:

我不知道您是如何设法在没有UINavigationController 的情况下使用 push segue 打开 someViewController,但如果可以,请尝试使用此代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   [self dismissViewControllerAnimated:YES completion:nil];
}

当然,检查一下,是你的view controller delegate 还是table view

【讨论】:

  • 感谢您的快速响应,我也这样做了。没发生什么事。单元格被突出显示(在模拟器中),您仍然可以上下滚动表格视图。 :(
  • 你确认你是delegateUITableView 吗?
  • 是的,我也这样做了。实际上现在我尝试了几次推一个单元格,推了 4 次之后,它成功了!!我还尝试弹回根视图,它带我进入了我的应用程序的第一页。有没有办法我可以堆栈 NavigationController 并且我不知道可能会弹出到第二个?
  • 如果dismissViewControllerAnimated: 工作,你没有导航控制器,我猜这是模态segue
  • 实际上你是最新的,我没有 UINavigation 控制器,但我能够在导航控制器中加载视图数组,然后弹出到我想要的视图。谢谢。
【解决方案2】:

简短的回答是当您没有导航控制器时不要使用推送转场。这根本不应该起作用,而且它起作用的事实是一个意外。不能保证它会在未来继续工作。

使用模态的 presentViewController:animated:completion 调用,使用相应的调用将其关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多