我有一个从多个地方调用的 View Controller ,第一次调用它时,会调用 awakeFromNib,但不会调用 viewDidLoad。 viewWillAppear 和 viewDidAppear 每次都会被调用。
此外, View (一个 UITableView 子类)功能正常,除了 viewDidLoad 中的任何内容显然都没有实现。
在此 View Controller 中未覆盖 loadView。
用于覆盖 viewDidLoad 和 awakeFromNib 的代码:
- (void)awakeFromNib
{
// Configure for self sizing cells:
self.tableView.estimatedRowHeight = 44;
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.allowsSelectionDuringEditing = YES;
self.clearsSelectionOnViewWillAppear = NO;
self.navigationItem.title = nil;
self.navigationItem.rightBarButtonItem = nil;
printf("\n awake from nib \n \n ---------- \n");
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.tableView.allowsSelectionDuringEditing = YES;
}
怎么可能调用了 awakeFromNib 但没有调用 viewDidLoad,我该如何解决?
编辑:我收到了一个帮助修复它的答案,但是我想知道它为什么会发生,因为它可能与我的应用程序中的错误有关。
谢谢。
最佳答案
这在 a comment 中有点暗箱操作。但事实证明可以解决问题。
确保在覆盖的方法中调用[super awakeFromNib]
。
关于ios - 调用了 awakeFromNib,未调用 viewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756114/