设置第一视图控制器AppDelegate.m

时间:2013-02-15 19:12:07

标签: iphone objective-c

我有一个程序,用户必须输入密码才能使用它,但我不知道用户每次都要输入密码。我相信如果条件为真,我可以通过将第一个视图控制器设置为某些内容来实现此目的。

AppDelegate.m中的代码:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if ([standardUserDefaults objectForKey:@"PassCorrect"]) {
    //WHAT GOES HERE
    return YES;
} else {
    return YES;
}

如果密码输入正确,则PassCorrect将布尔值设置为TRUE。我需要知道在if语句中放置什么来将第一个视图控制器设置为与默认值不同的东西。

我环顾四周,但到目前为止,我遇到的所有事情都会抛出错误,或者只是想出一个空白的屏幕。任何人都有实际工作的东西。

4 个答案:

答案 0 :(得分:5)

我建议不要尝试更改AppDelegate行为。相反,在你的root viewController中只检查用户是否有一个存储的密码(显然你必须存储它),如果没有,那么在viewDidAppear事件中,提供一个模态viewController。如果他们这样做,那么您的应用可以正常进行

答案 1 :(得分:2)

我已经为SWReaveaViewController完成了它希望它将用于你的完整

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

UIViewController *viewController;

NSUserDefaults *loginUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *check=[loginUserDefaults objectForKey:@"Checklog"];

if ([check isEqualToString:@"login"]) {

    viewController = [storyboard instantiateViewControllerWithIdentifier:@"SWRevealViewController"];
} else {

    viewController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
}


self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];

答案 2 :(得分:0)

这有用吗?

  -(void)setFirstView
    {

        if(![self userIsLoggedIn])
        {

            [self.window setRootViewController:self.loginViewController];
        }
        else {
            [self.window setRootViewController:self.mainViewController];
        } 
    }

编辑:

@property (nonatomic, strong) UIViewController* loginViewController
 @property (nonatomic, strong) UIViewController* mainViewController 
-(UIViewController*)loginViewController 
{ 
   if(!_loginViewContoller) 
    {
       _loginViewController = [UIViewController alloc]initWithNibName:@"loginNibName.xib"]] 
     } 
   return _loginViewController; 
}  

答案 3 :(得分:0)

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    [self loadInitialViewController];

    [self.window setBackgroundColor:[UIColor whiteColor]];
    [self.window makeKeyAndVisible];
    return YES;
}

 -(void)loadInitialViewController
{
    //Create first view controller
    NewLoginViewController* ipadLoginViewController = [[NewLoginViewController alloc]initWithNibName:@"NewLoginViewController" bundle:[NSBundle mainBundle]];

    //if you want a nav controller do this
    UINavigationController *navController =  [[UINavigationController alloc]initWithRootViewController:ipadLoginViewController];

     //add them to window
    [self.window addSubview:self.navController.view];
    [self.window setRootViewController:self.navController];


    if([standardUserDefaults objectForKey:@"PassCorrect"])
    {
        //push the next view controller on the stack inside the initial view
        [ipadLoginViewController bypassLoginView];
    }

}

我更喜欢直接操作窗口,因为当你注销时登录页面就在堆栈上。您也可以通过直接操作窗口来添加第二个视图控制器,就像添加到窗口步骤一样。