我的要求是UITabBarController是rootviewcontroller,在第一次启动应用程序时,我想显示UINavCon内部的登录程序,我通过presentViewController
显示它。
我不希望第一次看到UITabBarController并且不想如何登录UINavCon作为模态弹出。
我想让用户体验如果应用程序首次启动登录UINavCon应该是可见的。所以这是我的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];//is it correct to call it here?
LoginVC *loginObj = [[LoginVC alloc]init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:cellPhoneNumber];
self.tabBarController = [[UITabBarController alloc]init];
self.window.rootViewController = self.tabBarController;
[self.tabBarController presentViewController:self.navigationController animated:NO completion:^{}];
return YES;
}
我在[self.window makeKeyAndVisible];
uiwindow
alloc
之后立即在第二行拨打init
。这样做是否正确,或者我可能遇到像viewcontroller没有接收事件或方向通知的问题?
答案 0 :(得分:5)
您没有提到使用您的实现是否使代码正常工作。无论如何,我最近已经完成了类似的实现,我们需要在登录后提供登录控制器和tabBarController,所以只需共享我的实现。
创建登录控制器并以didFinishLaunching
方法显示。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
LoginController *loginCObj= [[[MainScreenController alloc]init]autorelease];
UINavigationController *navigationControllerObj = [[[UINavigationController alloc]initWithRootViewController:loginObj]autorelease];
self.window.rootViewController = navigationControllerObj;
[self.window makeKeyAndVisible];
在登录视图控制器中成功登录之后,调用appDelegate公共方法
在登录控制器中
AppDelegate *appDel = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDel applicationLoggedInSuccesfully];
在appDelegate文件中,添加如下方法:
-(void)applicationLoggedInSuccesfully{
UINavigationController *nv1 = [[[UINavigationController alloc] initWithNibName:nil bundle:nil]autorelease];
TabController1 *v1 = [[[TabController1 alloc] initWithNibName:nil bundle:nil]autorelease];
[nv1 pushViewController:v1 animated:NO];
UITabBarController *tabController = [[[UITabBarController alloc] init]autorelease];
tabController.viewControllers = @[nv1];
tabController.delegate = self;
self.window.rootViewController = tabController;
[self.window makeKeyAndVisible];
}
希望它会对你有所帮助。
答案 1 :(得分:4)
您可以随时拨打电话。调用它会影响窗口的z-index和screen属性。 它不依赖于任何特定的内容。