Jas*_*ien 57 iphone objective-c uinavigationbar uiviewcontroller uikit
我需要知道我的视图控制器何时会从导航堆栈中弹出,以便我可以执行操作.
我不能使用-viewWillDisappear,因为当视图控制器因任何原因移出屏幕时会被调用(比如新的视图控制器被推到顶部).
我特别需要知道控制器何时即将弹出.
任何想法都会很棒,提前谢谢.
Jef*_*ino 77
覆盖viewWillDisappear
显示的VC中的方法,然后检查isMovingFromParentViewController
覆盖中的标志并执行特定逻辑.在我的情况下,我隐藏了导航控制器工具栏.仍然要求你所呈现的VC理解它被推动但不完美.
ma1*_*w28 25
尝试在您的自定义子类中覆盖willMoveToParentViewController:
(而不是viewWillDisappear:
)UIViewController
.
在视图控制器添加或从容器视图控制器中删除之前调用.
- (void)willMoveToParentViewController:(UIViewController *)parent
{
[super willMoveToParentViewController:parent];
if (!parent) {
// `self` is about to get popped.
}
}
Run Code Online (Sandbox Code Playgroud)
cao*_*gin 18
幸运的是,在调用viewWillDisappear方法时,viewController已经从堆栈中删除了,所以我们知道viewController正在弹出,因为它不再出现在self.navigationController.viewControllers中了
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if let nav = self.navigationController {
let isPopping = !nav.viewControllers.contains(self)
if isPopping {
// popping off nav
} else {
// on nav, not popping off (pushing past, being presented over, etc.)
}
} else {
// not on nav at all
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
这对我有用.
- (void)viewDidDisappear:(BOOL)animated
{
if (self.parentViewController == nil) {
NSLog(@"viewDidDisappear doesn't have parent so it's been popped");
//release stuff here
} else {
NSLog(@"PersonViewController view just hidden");
}
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*ott 11
我不认为有一个明确的消息,但你可以继承UINavigationController并覆盖 - popViewControllerAnimated(尽管我之前没有尝试过这个).
或者,如果没有其他对视图控制器的引用,你可以添加到它的 - dealloc吗?
你可以在这里抓住它.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (viewController == YourAboutToAppearController) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
这将在显示新视图之前触发.没有人感动.我一直用asinine NavigationController做魔法.您可以设置标题和按钮标题,并在那里做任何事情.
归档时间: |
|
查看次数: |
33291 次 |
最近记录: |