答案 0 :(得分:2)
您需要将lvc
分配给 LoginViewController
。
- (void) viewDidAppear
{
[self performSelector:@selector(loginCheck:) withObject:nil afterDelay:0.5];
}
- (void) loginCheck:(id)sender
{
LoginViewController * lvc = [[LoginViewController alloc] init];
//lvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[lvc setDelegate:self];
//[self presentModalViewController:lvc animated:YES];
[self.navigationController pushViewController:lvc animated:YES];
}
答案 1 :(得分:1)
点亮你的
[self.navigationController pushViewController:loginViewController];
进入
- (void)viewDidAppear:(BOOL)animated
方法。 viewControllers navigationController在此之前不会加载
答案 2 :(得分:0)
有两件事可能会出错。
首先,您在applicationDidFinishLaunching
中分配导航控制器,我不确定哪个先行,applicationDidFinishLaunching
或viewDidLoad
。
如您所见,首先设置根视图控制器,然后分配导航控制器,然后在设置根视图控制器后立即启动viewDidLoad
,然后分配导航控制器。所以viewDidLoad
中的单词可能不起作用,因为当时导航控制器还没有出生。
但我并不完全理解前面的解释。这只是一种可能性。
还有一件奇怪的事情,你将导航控制器的导航栏隐藏起来
navigationController.navigationBarHidden = YES;
然后似乎用户无法弹回到根视图控制器,因此导航控制器不会推送登录视图控制器。 同时,模态视图控制器可以在导航栏隐藏或导航栏未分配的情况下被解除,因此当您将其作为模态视图控制器呈现时它将起作用。
但我仍然不太确定,因为我现在遇到了Xcode的一些问题,所以我无法测试前两个想法,抱歉。但我仍然建议您将navigationBarHidden
设置为NO
。
答案 3 :(得分:0)
- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.navController = navigationController;
[mainViewController release];
[navigationController release];
// Configure and display the window.
[window addSubview:navController.view];
[window makeKeyAndVisible];
}
- (void)viewDidLoad{
lvc = [[LoginViewController alloc] init];
[self.navigationController pushViewController:lvc animated:YES];
}