表视图的 iOS 问题:didSelectRowAtIndexPath 不触发窗口

Posted

技术标签:

【中文标题】表视图的 iOS 问题:didSelectRowAtIndexPath 不触发窗口【英文标题】:iOS problem with tableView:didSelectRowAtIndexPath not firing window 【发布时间】:2011-05-03 14:25:35 【问题描述】:

第一次,请温柔...

我有一个 ios 应用;一个选项卡式 RSS 阅读器,每个选项卡都有不同的 RSS 提要导航视图。一切都很好,直到您选择要查看提要的行,然后什么都没有发生。我使用的代码是:

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

    if (_webViewController == nil) 
        self.webViewController = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease];
    
    RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
    _webViewController.entry = entry;
    [self.navigationController pushViewController:_webViewController animated:YES];

其中 RSSEntry 是一个仅设置 RSS 提要变量的类。我已经设置了一个 WebViewController.xib,m 和 h 来保存视图。

当您选择行时,没有任何反应。任何想法都欣然接受。

谢谢

罗伯

【问题讨论】:

您是否通过设置断点检查是否真的没有任何反应? Valentin - 抱歉,我之前错过了您的评论,感谢您的帮助。 【参考方案1】:

self.navigationController 是否评估为非零?在某些情况下,navigationController 属性可能不会指向您封闭的 UINavigationController。我已经用特殊的视图控制器层次结构看到了这个......

【讨论】:

谢谢尼尔斯博特。我将如何解决这个问题?我的大脑今天已经死了……;) 您的视图控制器层次结构是什么样的? TabView 是主视图控制器,然后在两个选项卡上有 2 个导航视图 您的表视图控制器是否直接位于 UINavigationController 视图堆栈上? 我的主视图控制器在 tabcontroller 中有两个选项卡,每个选项卡调用单独的 nib。这些笔尖中的每一个都是一个表格视图。我开始认为我应该将每个表格视图放在导航控制器中......?【参考方案2】:

_webViewController 在你使用它时可能已经释放了,因为你已经在if 块中分配了它。在该块的末尾,它被自动释放。

在你的 alloc 语句中删除 WebViewController 的 autorelease 子句,并在调用 pushViewController 之后添加 [webViewController release]

【讨论】:

感谢您的快速回复!试过这个,但不幸的是同样的效果;链接没有回应。 哦!我以前错过了这个。您正在创建self.webViewController,但随后使用_webViewController。注意后者的前导下划线。这可能是问题吗?我怀疑自动释放的事情也是一个问题,fwiw。 嗨,马克 - 不,也不是,但感谢您查看此内容,感谢您的帮助!我一定在某处遗漏了一些完全明显的东西...... 当您在调试器中单步执行此代码时,您会看到什么?如果您不期望这些变量中的任何一个都为零? 不是我能看到马克,看起来还不错。它从数组中提取文章 URL 很好,例如

以上是关于表视图的 iOS 问题:didSelectRowAtIndexPath 不触发窗口的主要内容,如果未能解决你的问题,请参考以下文章

从表视图导航到表视图再到表视图 (iOS)

在单个视图iOS中加载2个表视图[关闭]

IOS表视图中的数据加载问题

表视图的 iOS 问题:didSelectRowAtIndexPath 不触发窗口

iOS:表视图(带有 FetchedResultsController)作为另一个视图的子视图

表视图背景视图在 iOS7 中不起作用