Tej*_*uri 2 objective-c viewdidappear viewwillappear ios
我试图了解方法调用方案的场景,确实/将会出现和消失.
我所做的是选择表格单元格(灰色高光),转到详细视图并返回并取消选择所选行(删除选定的单元格灰色).
这是我的方法:
-(void)viewDidAppear:(BOOL)animated {
DLog(@"%@ did appear", self);
[super viewDidAppear:animated];
if (_isPushed) {
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
_isPushed=NO;
}
}
-(void)viewWillAppear:(BOOL)animated {
DLog(@"%@ will appear", self);
[super viewWillAppear:animated]; //If I remove this super call , then it works fine and there is no delay in deselecting the table cell
}
-(void)viewWillDisappear:(BOOL)animated {
DLog(@"%@ will disappear", self);
[super viewWillDisappear:animated];
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
_isPushed=YES;
}
Run Code Online (Sandbox Code Playgroud)
所以,当我放断点时,流程如下:
没有超级电话:
在推动新VC的同时:
current viewWillDisappear //makes sense
new viewWillAppear //makes sense
current viewDidAppear // doesnt make sense , y this should get called as the view is already appeared?
current viewWillDisappear // make sense
current viewDidDisappear //make sense
new viewDidAppear //make sense
Run Code Online (Sandbox Code Playgroud)
从VC推回来的时候:
current viewWillDisappear
new viewDidDisappear
current viewDidDisappear
new viewDidAppear
Run Code Online (Sandbox Code Playgroud)
超级电话:
在推动新VC的同时:
current viewWillDisappear
new viewWillAppear
current viewDidAppear
current viewWillDisappear
current viewDidDisappear
new viewDidAppear
Run Code Online (Sandbox Code Playgroud)
从VC推回时:
current viewWillDisappear
new viewDidDisappear
current viewDidDisappear
new viewDidAppear
Run Code Online (Sandbox Code Playgroud)
无论是否使用超级呼叫,流程都大致相同.但我面临的问题是,当我在viewWillAppear中使用超级调用时,在删除单元格时会有一个延迟(大约> 1秒).
如果我不在viewWillAppear中使用超级调用,则没有延迟并且单元格正在被删除(大约<0.5秒)
我不确定是否使用超级电话.
任何人都可以告诉我为什么取消选择细胞有延迟?
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |