gpt4 book ai didi

iphone - 在 UITableViewController 子类中重写 loadView

转载 作者:行者123 更新时间:2023-12-03 18:41:55 28 4
gpt4 key购买 nike

我正在尝试设置一个 UITableViewController ,以便它的 tableView 属于我的自定义子类。我的 loadView 方法当前如下所示:

- (void) loadView {
MyTableViewSubclass* tv = [[[MyTableViewSubclass alloc]initWithFrame: CGRectZero style: UITableViewStylePlain]autorelease];
self.view = tv;
self.tableView = tv;
}

如果我注释掉上述方法,我稍后会遇到崩溃。所以缺少一些东西。但什么?

Apple 文档 says我不应该在 loadView 中调用 super 。这是有道理的,因为我希望 View 有我的类,而不是他们的。

我尝试过但没有帮助的事情:

  • 重写 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).'

最佳答案

结果我需要设置 tableView 的 dataSource 和 delegate 作为加载的一部分。所以当我这样做时,一切正常:

- (void) loadView {
MyTableViewSubclass* tv = [[[MyTableViewSubclass alloc]initWithFrame: CGRectZero style: UITableViewStylePlain]autorelease];
tv.dataSource = self;
tv.delegate = self;
self.view = tv;
self.tableView = tv;
}

关于iphone - 在 UITableViewController 子类中重写 loadView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351323/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com