我正在尝试在我的应用程序变为活动状态时每次呈现一个视图控制器(一种密码请求类型视图)。输入正确的密码后,它应该从栈中弹出。我要推送的密码视图不是初始视图控制器,所以我无法从AppDelegate的applicationDidBecomeActive访问它,这是我的困扰所在。
我还尝试了从MainViewController的ViewWillAppear推送密码视图,但它只在屏幕刷新时调用,而不是在应用程序变为活动状态时调用。
我已经在Stack Overflow上研究了过去几天类似的问题,但我仍然不理解正确的方法。我听说可能无法以这种方式推送视图,因为在Storyboard或NavigationController连接/初始化等之前可能会调用applicationDidBecomeActive。
如果有人能向我提供推送/呈现视图的正确方法,或者如果有其他更好的地方可以完成此类事情,我将不胜感激。
解决方法:我只是从故事板中删除了视图,并改用nib。我使用:
我还尝试了从MainViewController的ViewWillAppear推送密码视图,但它只在屏幕刷新时调用,而不是在应用程序变为活动状态时调用。
我已经在Stack Overflow上研究了过去几天类似的问题,但我仍然不理解正确的方法。我听说可能无法以这种方式推送视图,因为在Storyboard或NavigationController连接/初始化等之前可能会调用applicationDidBecomeActive。
如果有人能向我提供推送/呈现视图的正确方法,或者如果有其他更好的地方可以完成此类事情,我将不胜感激。
解决方法:我只是从故事板中删除了视图,并改用nib。我使用:
PasscodeUnlockVC *passcodeUnlock = [[PasscodeUnlockVC alloc] initWithNibName:@"PasscodeUnlockVC" bundle:[NSBundle mainBundle]];
[(UINavigationController *)self.window.rootViewController pushViewController:passcodeUnlock animated:NO];
查看层次结构数据:
(gdb) po [[(id)UIApp keyWindow] recursiveDescription]
<UIWindow: 0x736a4b0; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x7367b40>>
| <UILayoutContainerView: 0x76977a0; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x769de60>>
| | <UINavigationTransitionView: 0x7692110; frame = (0 0; 320 480); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x769a8c0>>
| | | <UIViewControllerWrapperView: 0x73868d0; frame = (0 64; 320 416); autoresize = W+H; layer = <CALayer: 0x75510e0>>
| | | | <UIView: 0x76b93e0; frame = (0 0; 320 416); autoresize = W+H; layer = <CALayer: 0x7386850>>
| | <UINavigationBar: 0x73664b0; frame = (0 20; 320 44); clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x7366550>>
| | | <UINavigationBarBackground: 0x7360ea0; frame = (0 0; 320 44); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7366520>> - (null)
| | | <UINavigationItemView: 0x76b95e0; frame = (160 21; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x76aa8e0>>
| | | <UINavigationItemButtonView: 0x7550650; frame = (5 7; 73 30); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7368b40>>
Current language: auto; currently objective-c
(gdb)
viewDidBecomeActive
消息,当我在developer.apple.com
上搜索时,没有找到任何结果。也许您应该告诉我们更多关于这个方法的信息,甚至展示您的代码。 - rob mayoff