我有一个应用程序。在我第一次启动应用程序的时候我正在做这个我正在添加LoginViewController其他明智的它会添加splitViewController它工作正常但问题是我想要在添加loginViewController时,当我在loginscreen上按singButton然后它应该将splitViewController添加到窗口代码它是这样的,但当我按下登录singin然后应用程序关闭,当我再次打开它然后它显示我splitViewController
这是我的代码
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(actionNotificationData:)
name:@"reloadSplit"
object:nil];
[self.window addSubview:[loginViewController view]];
)
else{
[self.window addSubview:[splitViewController view]];
}
-(void)actionNotificationData:(NSNotification *)notification {
[self.splitViewController removeFromParentViewController];
window = [UIApplication sharedApplication].keyWindow;
if (!window)
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
[[[window subviews] objectAtIndex:0] addSubview:splitViewController];
[window makeKeyAndVisible];
}
这里是signInButtonAction
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadSplit" object:self];
[self dismissModalViewControllerAnimated:YES];
我的代码
self.splitViewController =[[UISplitViewController alloc]init];
self.rootViewController=[[RootViewController alloc]init];
self.detailViewController=[[[FirstDetailViewController alloc]init] autorelease];
self.loginViewController=[[[LoginViewController alloc]init] autorelease];
UINavigationController *rootNav=[[UINavigationController alloc]initWithRootViewController:rootViewController];
UINavigationController *detailNav=[[UINavigationController alloc]initWithRootViewController:detailViewController];
if ([detailNav.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
UIImage *image = [UIImage imageNamed:@"Nav.png"];
[detailNav.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
user_Name=@"Jamshaid";
isClickedLogin=@"NO";
userLogin=@"Logout";
self.splitViewController.viewControllers=[NSArray arrayWithObjects:rootNav,detailNav,nil];
self.splitViewController.delegate=self.detailViewController;
答案 0 :(得分:0)
首先将您的LoginViewController
添加为self.window.rootViewController
,例如
(这里我也添加了UINavigationController)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
LoginViewController *loginViewController = [[LoginViewController alloc] init];
UINavigationController *loginNVController = [[UINavigationController alloc] initWithRootViewController:loginViewController];
loginNVController.navigationBarHidden = YES;
self.window.rootViewController = loginNVController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
然后在LoginViewController.m
这是signINButton
的方法,当您点按signINButton
-(void)passToSplitViewController:(UIButton *)sender
{
[self.navigationController pushViewController:self.splitViewController animated:YES];
}
或强>
将以下代码放在didFinishLaunchingWithOptions
//Add the below line only if u need to populate login screen before UISplitViewController!
LoginViewController *loginView = [[LoginViewController alloc] init];
[self.window addSubview:splitViewController.view];
//Add the below line only if u need to populate login screen before UISplitViewController!
[splitViewController presentModalViewController:loginView animated:NO];