[英]IOS- navigation to main view after reopening of application
我正在一個iPhone項目中創建登錄頁面。 我希望當用戶每次打開應用程序后登錄到應用程序時,他會自動登錄到應用程序。 現在它正在我的應用程序中運行(用戶ID和密碼已保存),我想在登錄后下次用戶打開該應用程序時,屏幕上顯示的第一個視圖是除登錄視圖之外的主視圖。
我的代碼
- (void)viewDidLoad
{
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
checked=[standardDefaults boolForKey:@"boxIsChecked"];
userid.text=[standardDefaults objectForKey:@"email"];
password.text= [standardDefaults objectForKey:@"password"];
[self checkTheBox];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(IBAction)CheckBtn_click:(id)sender
{
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if(!checked)
{
//NSLog(@"The value of the bool is %@\n", (checked ? @"YES" : @"NO"));
[CheckBtn setBackgroundImage:[UIImage imageNamed:@"pro-checked.png"] forState:UIControlStateNormal];
checked=YES;
[standardDefaults setBool:checked forKey:@"boxIsChecked"];
[standardDefaults setObject:userid.text forKey:@"email"];
[standardDefaults setObject:password.text forKey:@"password"];
}
else if(checked)
{
[CheckBtn setBackgroundImage:[UIImage imageNamed:@"Check-Box.png"] forState:UIControlStateNormal];
checked=NO;
[standardDefaults setBool:checked forKey:@"boxIsChecked"];
[standardDefaults setObject:NULL forKey:@"email"];
[standardDefaults setObject:NULL forKey:@"password"];
}
[standardDefaults synchronize];
}
-(void)checkTheBox
{
if(!checked)
{
[CheckBtn setBackgroundImage:[UIImage imageNamed:@"Check-Box.png"] forState:UIControlStateNormal];
}
else if(checked)
{
[CheckBtn setBackgroundImage:[UIImage imageNamed:@"pro-checked.png"] forState:UIControlStateNormal];
}
}
一種方法是在情節提要中添加一個新的視圖控制器,並將其設置為初始視圖控制器(如果使用情節提要)。 然后,為該新視圖控制器創建一個子類,並實現這種邏輯:
// in initial view controller
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (isLoggedIn) {
// user is logged in, so segue straight to the main view
[self performSegueWithIdentifier:@"main" sender:self];
} else {
// user isn't logged in, so segue to login view
[self performSegueWithIdentifier:@"login" sender:self];
}
}
然后,您需要將初始視圖控制器中的segue添加到登錄頁面(並將segue標識符設置為login
)和主應用程序視圖控制器(並將segue標識符設置為main
)。
還要注意,永遠不要將密碼以純文本格式存儲在NSUserDefaults
,因為任何人都可以通過這種方式輕松地訪問它們。 不要那樣做 而是將它們存儲在鑰匙串中。 這是一個很棒的教程,您應該閱讀: http : //www.raywenderlich.com/92667/securing-ios-data-key-keychain-touch-id-1password
將此代碼添加到您的appdelegate(啟動時)
您可以從情節提要中選擇特定的筆尖。 注意-將標識符添加到您的xib。 即[LoginView]在這種情況下
if (isLoggedIn)
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
LoginView *loginView=[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:loginView];
[loginView setNavigationBarHidden:YES];
self.window.rootViewController=loginView;
}
else
{
// your normal login code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.