当我点击 UITableViewCell 时,视图控制器没有被推送。

Posted

技术标签:

【中文标题】当我点击 UITableViewCell 时,视图控制器没有被推送。【英文标题】:View controller is not pushed when I tap on UITableViewCell. 【发布时间】:2014-02-17 18:45:30 【问题描述】:

由于某种原因,我的导航控制器没有正确推送。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    NSLog(@"HERE!");
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"myVC"];
    vc.labelText = [self.myArray objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:vc animated:YES];
    NSLog(@"Pushed");

输出是:

2014-02-17 12:41:47.187 TableViewTesting[37532:70b] HERE!
2014-02-17 12:41:47.189 TableViewTesting[37532:70b] Pushed

所以一切都运行良好,但即使在点击单元格后我仍然只能看到我的初始视图控制器。

【问题讨论】:

使用调试器确保vc 不是nil。还要检查self.navigationController 不是nil @Gavin,如果 vc 为 nil,那么他会从 instantiateViewControllerWithIdentifier 中得到一个异常。我在这里看到的唯一一件事是 self.navigationController 为 nil,这就是为什么什么也没发生。 检查你的导航控制器。您的控制器是否嵌入在导航控制器中。 【参考方案1】:

您从中调用此代码的视图控制器是否嵌入在Navigation Controller 中?如果不是,那么调用pushViewController 方法时不会发生任何事情。

转到您的Storyboard,选择初始视图控制器,然后从顶部栏编辑器>嵌入>导航控制器再试一次。

【讨论】:

我遇到了一些其他问题,但最终这确实解决了我的问题。谢谢!

以上是关于当我点击 UITableViewCell 时,视图控制器没有被推送。的主要内容,如果未能解决你的问题,请参考以下文章

必须在 uitableviewcell 中双击才能打开视图

如何在 UITableViewCell 上保留子视图

点击 UITableViewCell 时 UIView 消失

UITableViewCell 内的 UIButton 没有收到点击?

将子视图添加到 UITableViewCell 问题

向左滑动时未剪切子视图以删除 UITableViewCell