【发布时间】:2011-10-01 07:33:42
【问题描述】:
当我收到本地通知时,我会执行以下操作:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notif { [navController popToRootViewControllerAnimated:NO]; [navController pushViewController:notificationSplashViewController 动画:YES]; }如果我的notificationSplashViewController 是当前的ViewController,它的viewWillAppear() 方法不会被调用。如何检测notificationSplashViewController的重推?
【问题讨论】:
-
大胆猜测 - 如果你为流行音乐制作动画会发生什么?
-
...一场灾难!导航栏变得疯狂,与推送的视图控制器的所有标题重叠。实际上,在控制台上我得到:
nested push animation can result in corrupted navigation barFinishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. -
嘎嘎!那很不好。不要那样做 :-) 另一个疯狂的猜测 - 将 push 移到它自己的方法(称为 thePushMethod)中,然后在 pop 之后调用该方法,如下所示:[self performSelector:@selector(thePushMethod) withObject:nil afterDelay:0.0 ];
-
很好!有用! :) 谢谢!您能解释一下为什么这种解决方法有效吗?
-
当你像这样调用选择器时,它不会实时执行,它会将其放入队列中以在下一个运行循环期间执行,这为第一个动画提供了足够的时间完成。
标签: objective-c uiviewcontroller uinavigationcontroller