ads*_*bum 24 objective-c viewwillappear ios
假设我有UIViewController
A和B.用户使用push segue从A导航到B. 比用户按下后退按钮并来到A.
现在viewWillAppear
称为A. 我可以在这里的代码中知道我来自后退按钮(navigationController popTo...
)而不是通过其他方式吗?而且无需在B视图控制器中编写特殊代码.
G M*_*Man 10
我喜欢在视图控制器A中执行以下操作:
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (_popping) {
_popping = false;
NSLog(@"BECAUSE OF POPPING");
} else {
NSLog(@"APPEARING ANOTHER WAY");
}
//keep stack size updated
_stackSize = self.navigationController.viewControllers.count;
....
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
_popping = self.navigationController.viewControllers.count > _stackSize;
....
}
Run Code Online (Sandbox Code Playgroud)
你正在做的是跟踪你的视图控制器(A)是否因为正在推动视图控制器(B)或其他原因而消失.然后(如果你没有修改子视图控制器命令)它应该准确地告诉你是否因为导航控制器上的弹出而出现(A).
将 BOOL 属性添加到UIViewController
A:
@property (nonatomic) BOOL alreadyAppeared;
Run Code Online (Sandbox Code Playgroud)
然后在您的viewWillAppear:
方法中添加:
if (!self.alreadyAppeared) {
self.alreadyAppeared = YES;
// Do here the stuff you wanted to do on first appear
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9386 次 |
最近记录: |