当转到另一个 UITableViewController 时 UITableViewController 冻结

Posted

技术标签:

【中文标题】当转到另一个 UITableViewController 时 UITableViewController 冻结【英文标题】:UITableViewController freezes when segue to another UITableViewController 【发布时间】:2013-10-17 16:24:53 【问题描述】:

我有一个 TableViewController (VC1) 设置为推送到另一个 TableViewController (VC2)。这个连接是通过从 VC1 到 VC2 的 ctrl-drag 在情节提要中建立的。执行 segue 时,应用程序冻结,我看到 CPU 固定为 100%,内存使用量开始迅速攀升。我从自定义 VC2 开始,看到 viewWillAppear 被调用,并且 numberOfRowsInSection 等表委托方法正在正确执行。

为了缩小问题的范围,我可以看到即使是像 VC2 一样的普通 UITableViewController(没有自定义控制器类)也有同样的问题。但是当我将 VC2 设置为一个普通的 UIViewController(不是表)时,它就很好了。

我在我的应用程序的其他地方还有大约十几个 TableView -> TableView segues,它们的设置方式相同,并且没有问题。

VC1代码:

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

    [self performSegueWithIdentifier:@"myseguename" sender:self];

【问题讨论】:

尝试使用 Instruments 来诊断问题 所以我使用 Instruments 分析了我的应用程序,但这是我第一次使用它。我应该寻找什么?唯一立即引人注目的是我在主线程上看到了一堆中断事件。 【参考方案1】:

原来我的问题是尝试使用外观代理设置 UITableView 的 backgroundView 引起的。在文档 (https://developer.apple.com/library/ios/documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html) 中发现 UITableView backgroundView 未标记为 UI_APPEARANCE_SELECTOR。

【讨论】:

以上是关于当转到另一个 UITableViewController 时 UITableViewController 冻结的主要内容,如果未能解决你的问题,请参考以下文章

转到另一个视图控制器

jsp中如何点击按钮跳转到另一个页面?

为啥快速跳转到另一个页面时会出现意外空间

转到另一个故事板 Swift

带有“加入”的 iOS 键盘,转到另一个视图

小程序跳转到另一个小程序问题