【问题标题】:How do I correctly display a UINavigationController when tapping a UITableViewCell?点击 UITableViewCell 时如何正确显示 UINavigationController?
【发布时间】:2014-04-21 01:29:35
【问题描述】:

我是 iOS 开发新手。我有一个具有UINavigationController 的应用程序(带有嵌入式UITableViewController,称为TableView1),我需要通过点击UITableViewCell 为TableView1 显示另一个UITableView(TableView2)。

我做了一些在线搜索,并没有真正找到任何超级有用的东西,但是我能够找到的内容是我必须展示 TableView2 而不是推送它。一切正常,除了 TableView2 没有后退按钮,我必须创建自己的 UIBarButtonItem 并分配给 leftBarButtonItemnavigationItem

这一切都很好,除了我不禁觉得我做错了。有没有更简单的方法(或更正确的方法)来完成我想要完成的事情?

TableView1 的代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewController *tableViewController = [[UITableViewController alloc] init];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:tableViewController];

    [self.navigationController presentViewController:navigationController
                                            animated:YES
                                          completion:nil];
}

编辑:除了这个问题,如果我发现我这样做是正确的,我如何让正常的后退按钮显示?或者我可以吗?

【问题讨论】:

  • 为什么不想推送呢?
  • 不是不想推。我试图推动 UINavigationController,但什么也不会发生。我设置了segue来推动,但没有。做了一些研究,发现你不能从 UITableViewCell 推送 UINavigationController。不确定这是否正确,我只知道 push 不起作用,但是当我将代码更改为 presentViewController 时,它起作用了。

标签: ios objective-c uitableview uinavigationcontroller


【解决方案1】:

直接从那个视图控制器展示它:

[self presentViewController:navigationController animated:YES completion:nil];

或者使用pushViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewController *tableViewController = [[UITableViewController alloc] init];

    [self.navigationController pushViewController:tableViewController animated:YES];
}

【讨论】:

  • 好的,我试过了,结果和以前一样。
  • @dstepan 我已经更新了我的答案,包括如何推送视图控制器
  • 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“不支持推送导航控制器”
  • 请注意我的回答是我推送 tableViewController
  • 啊!你是圣人。只推送 UITableViewController 效果很好!
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2020-03-14
  • 2020-12-13
相关资源
最近更新 更多