我正在尝试设置一个 UITableViewController 以便它的 tableView 属于我的自定义子类。我的 loadView 方法目前如下所示:
- (void) loadView {
MyTableViewSubclass* tv = [[[MyTableViewSubclass alloc]initWithFrame: CGRectZero style: UITableViewStylePlain]autorelease];
self.view = tv;
self.tableView = tv;
}
如果我注释掉上述方法,我稍后会崩溃。所以缺少一些东西。但是什么?
Apple 的文档说我不应该在 loadView 中调用 super。这是有道理的,因为我希望视图有我的课,而不是他们的课。
我尝试过但无济于事的事情:
- 重写 loadView 方法,使其创建一个普通的 UITableView。这告诉我问题的根源不在于我的子类的实现。
- 从我的 loadView 方法调用 [super viewDidLoad]。从 Apple 的文档中,我不清楚该方法是从 loadView 调用还是之后调用。在任何情况下,将它添加到我的 loadView 方法的末尾都无济于事。
我尝试过的一件事确实可以解决问题,但没有达到目的:
- 注释掉我的 loadView 方法。
编辑:崩溃如下所示。它发生在用户进行一些输入之后。如果我创建一个普通的 UITableView 而不是我的子类,它也会以同样的方式发生。应用程序中发生了很多事情,而我的 loadView 覆盖中的某些东西 [或者更有可能是我的覆盖中缺少的东西] 导致状态不同,从而导致崩溃。但我没有看到跟踪不同之处的好方法。
2011-09-08 12:44:59.591 MyAppName[97649:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[MyTableViewSubclass scrollToRowAtIndexPath:atScrollPosition:animated:]: row (0) beyond bounds (0) for section (0).'