在我的应用中,我在willFinishLaunching
中设置了窗口的rootViewController。标准。
在didFinishLaunching
中,我检查用户是否已登录,如果没有,我会提供一个LoginViewController。
- (BOOL)application:(UIApplication *)application willFinishLaunching...
{
...
self.window.rootViewController = [MyViewController new];
[self.window makeKeyAndVisible];
...
return true;
}
- (BOOL)application:(UIApplication *)application didFinishLaunching...
{
if (/* not logged in */) {
UIViewController *login = [LoginViewController new];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:welcome];
[self.window.rootViewController presentViewController:nav animated:false completion:nil];
}
return true;
}
在iOS 7中,这非常有效。但是,在iOS 8中,我在控制台中看到以下警告:
Unbalanced calls to begin/end appearance transitions for <LoginViewController: 0x7fca9340cbb0>.
我还不太确定在能够展示我的LoginViewController时我需要做些什么才能避免此警告。
我喜欢来自window.rootViewController
,因为它允许我在用户登录时解除LoginViewController
,而不必将完成/回调代码添加到我的应用程序中的任何其他视图控制器。
有什么想法吗?
答案 0 :(得分:0)
您需要为视图控制器提供一些延迟。我在我的一个项目中使用了这个技巧。
var a = moment("12 24 1995").format('DD MM YYYY');
alert(a)
使用带延迟的performSelector调用此方法
-(void)presentController
{
UIViewController *login = [LoginViewController new];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:welcome];
[self.window.rootViewController presentViewController:nav animated:false completion:nil];
}