我正在学习ios / xcode和路障。
我有一个tabbarcontroller +基于导航的设计。如果用户没有登录,我需要提供登录屏幕。这是基本的层次结构。登录页面需要一个navigationBar(我按照的教程在栏上放了一个“Go”按钮。
LoginController: (LTController.h,.m)
Main View:TabBarController>
NavigationController>View1>View1a
NavigationController>View2
我在这里看了很多关于模态视图,委托方法等的帖子。其中大部分是代码片段,遗憾的是我的初学者水平有点过头了。
很欣赏如何实现这一点的简单解释。特别是关于哪些文件需要更改的说明会很棒。
感谢
答案 0 :(得分:12)
这是一个场景。它如此简单。我只是希望它会有用。
对于UITableBarController,为 storyboard id提供身份名称
然后在您的ViewController类文件中,您具有正确的身份验证凭据>。在那边做一些事情进行身份验证。然后按照此代码。它工作正常
- (IBAction)Login:(id)sender {
if(authenticated) // authenticated---> BOOL Value assign True only if Login Success
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"tab"];
self.navigationController.navigationBarHidden=YES;
[self.navigationController pushViewController:obj animated:YES];
}
答案 1 :(得分:10)
您必须在显示标签栏之前显示它,或者在第一个视图控制器中放置逻辑以启动登录过程。还有其他方法,但它们变得更复杂,我现在想给你基本的选择。
这是我推荐的一般概念。
a)在某处创建一个持久存储变量,以确定用户是否已登录。
b)在附加到标签栏的第一个视图控制器的View will load方法中添加对此标志的检查。
c)直接从视图控制器提供模态登录页面。如果他们登录,很好的解雇它,如果没有,他们就会被困在模态页面上。
所以,基本上这是怎么做的:
为了解释,我将打电话给你的第一个视图控制器 - 你的tabbar控制器上的第一个标签 - fviewController - 好吗?
-(void)viewDidLoad {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults objectForKey:@"loggedIn"]boolValue]) {
NSLog(@"user is logged in - do nothing");
}
else {
NSLog(@"User is not logged in");
[self performSegueWithIdentifier:@"LoginPage" sender:self];
}
}
还有几点 看起来你正在使用故事板和segues。在这种情况下,您将执行以下操作:
要翻转状态:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in
[defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out
do this in your login controller
取消模态视图。从技术上讲,你应该使用委托回调来做到这一点,但是如果你想保持简单,这应该没问题
[self dismissViewControllerAnimated:YES completion:^{
}];
所以你的逻辑就像这样 - 他们登录了吗?是,然后为登录设置YES状态,然后关闭。如果他们不登录,什么也不做。他们被困住了。
最后,如果您需要设置登录控制器,您将使用方法:prepareForSegue ...在segue发生之前初始化变量。如果你正在做一些教程,你可能已经阅读过它。
嗯......希望有所帮助。这是一种非常基本的方法。如果能够正常工作,您可以继续为其添加更多安全性和功能。
祝你好运。