gpt4 book ai didi

iphone - 使用 [super initWithStyle :UITableViewStyleGrouped] 初始化 UITableViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:08 27 4
gpt4 key购买 nike

据我所知,这在 Apple Api 中是正确的,当使用 initWithStyle 方法初始化 UITableViewController 时,它应该返回对 self.tableView 中 UITableView 的引用。这是有道理的,因为一旦初始化,您就无法更改 tableView 的样式。

但在我的情况下,这不会发生。


- (id)initWithSomeData:(SomeData *)someData {
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
}
NSLog(@"self? %@ tableView? %@", self, self.tableView);
return self;
}

此显示是 self 的对象 ID,但 self.tableView 为空。难道我做错了什么?我没有使用界面生成器!

回答:Jan 其实是对的,我发现 UITableViewController 的初始化过程与普通的 UIViewController 有点不同。

我的理解是,在创建时调用了一个 init 方法,并且会在我们调用任何其他方法(loadView、viewDidLoad)之前完成。这对于 UIViewController 是正确的,但对于 UITableViewController 则不正确。

UITableViewController initWithStyle 初始化程序实际上调用 loadView 和 viewDidLoad 作为其初始化过程的一部分。 self.tableView 的属性是在 loadView 中设置的,但如果你覆盖 loadView 则不会,我已经这样做了,因此 self.tableView 没有被设置。

最佳答案

tableView 对象可能会在稍后创建。尝试覆盖:

-(void)viewDidLoad; 

self.tableView 应该指向此时的有效对象。

关于iphone - 使用 [super initWithStyle :UITableViewStyleGrouped] 初始化 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5620990/

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