在ipad应用程序中首次启动时将View添加到主窗口

时间:2013-07-18 07:05:47

标签: ios objective-c ipad uisplitviewcontroller

我有一个应用程序。在我第一次启动应用程序的时候我正在做这个我正在添加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;

1 个答案:

答案 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];