我有一个程序,用户必须输入密码才能使用它,但我不知道用户每次都要输入密码。我相信如果条件为真,我可以通过将第一个视图控制器设置为某些内容来实现此目的。
AppDelegate.m中的代码:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if ([standardUserDefaults objectForKey:@"PassCorrect"]) {
//WHAT GOES HERE
return YES;
} else {
return YES;
}
如果密码输入正确,则PassCorrect将布尔值设置为TRUE。我需要知道在if语句中放置什么来将第一个视图控制器设置为与默认值不同的东西。
我环顾四周,但到目前为止,我遇到的所有事情都会抛出错误,或者只是想出一个空白的屏幕。任何人都有实际工作的东西。
答案 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];
}
}
我更喜欢直接操作窗口,因为当你注销时登录页面就在堆栈上。您也可以通过直接操作窗口来添加第二个视图控制器,就像添加到窗口步骤一样。