调用了 awakeFromNib,未调用 viewDidLoad
awakeFromNib is called, viewDidLoad is not called
我有一个从多个地方调用的视图控制器,第一次调用它时,调用了 awakeFromNib,但没有调用 viewDidLoad。 viewWillAppear 和 viewDidAppear 每次都会被调用。
此外,视图(一个 UITableView 子类)功能正常,除了 viewDidLoad 中的任何内容显然都没有实现。
在此视图控制器中未覆盖 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,我该如何解决?
编辑:我收到了帮助修复它的答案,但是我想知道为什么会这样,因为它可能与我的应用程序中的错误有关。
谢谢。
这在 中有点摸不着头脑,但最终解决了问题。
确保在覆盖的方法中调用 [super awakeFromNib]
。
我有一个从多个地方调用的视图控制器,第一次调用它时,调用了 awakeFromNib,但没有调用 viewDidLoad。 viewWillAppear 和 viewDidAppear 每次都会被调用。
此外,视图(一个 UITableView 子类)功能正常,除了 viewDidLoad 中的任何内容显然都没有实现。
在此视图控制器中未覆盖 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,我该如何解决?
编辑:我收到了帮助修复它的答案,但是我想知道为什么会这样,因为它可能与我的应用程序中的错误有关。
谢谢。
这在
确保在覆盖的方法中调用 [super awakeFromNib]
。