点击 UITableViewCell 时如何正确显示 UINavigationController?
Posted
技术标签:
【中文标题】点击 UITableViewCell 时如何正确显示 UINavigationController?【英文标题】:How do I correctly display a UINavigationController when tapping a UITableViewCell? 【发布时间】:2014-04-21 01:29:35 【问题描述】:我是 ios 开发新手。我有一个具有UINavigationController
的应用程序(带有嵌入式UITableViewController
,称为TableView1),我需要通过点击UITableViewCell
为TableView1 显示另一个UITableView
(TableView2)。
我做了一些在线搜索,并没有真正找到任何超级有用的东西,但是我能够找到的内容是我必须展示 TableView2 而不是推送它。一切正常,除了 TableView2 没有后退按钮,我必须创建自己的 UIBarButtonItem
并分配给 leftBarButtonItem
的 navigationItem
。
这一切都很好,除了我不禁觉得我做错了。有没有更简单的方法(或更正确的方法)来完成我想要完成的事情?
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 时,它起作用了。 【参考方案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 效果很好!以上是关于点击 UITableViewCell 时如何正确显示 UINavigationController?的主要内容,如果未能解决你的问题,请参考以下文章
如何在单元格选择/取消选择时正确切换 UITableViewCell 的 accesoryType?
如何在 UITableViewCell 上正确显示一个 AVPlayerViewController?
UITableViewCell 中的 UIButton 是可点击的(获取正确的事件)但问题是点击效果不可见
如何根据 UITableViewCell 点击更新 UINavigationItem?