1

我有一个程序,用户必须输入密码才能使用它,但我不知道用户每次都必须输入密码。我相信我可以通过将第一个视图控制器设置为条件为真来做到这一点。

AppDelegate.m 中的代码:

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

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

我环顾四周,但到目前为止,我遇到的所有事情都会抛出错误或只是出现空白屏幕。任何人都有真正有效的东西。

4

4 回答 4

5

我建议不要尝试更改 AppDelegate 行为。相反,在您的根视图控制器中,只需检查用户是否有存储的密码(显然,您必须存储它),如果没有,则在viewDidAppear事件中显示一个模态视图控制器。如果他们这样做,那么您的应用程序可以正常运行。

于 2013-02-17T03:27:13.707 回答
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];
于 2015-06-09T07:31:14.203 回答
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; 
}  
于 2013-02-15T19:25:02.537 回答
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];
    }

}

我更喜欢这样做而不是直接操作窗口,因为这样登录页面就在您注销时的堆栈上。您也可以通过直接操作窗口来添加第二个视图控制器,就像 //add to window 步骤一样。

于 2013-02-15T19:26:41.563 回答