aVC*_*aVC 12 modal-dialog storyboard ios
我正在学习ios/xcode和路障.
我有一个tabbarcontroller +导航设计.如果用户没有登录,我需要提供登录屏幕.这是基本的层次结构.登录页面需要一个navigationBar(我按照的教程在栏上放了一个"Go"按钮.
LoginController: (LTController.h,.m)
Main View:TabBarController>
NavigationController>View1>View1a
NavigationController>View2
Run Code Online (Sandbox Code Playgroud)

我在这里阅读了很多关于模态视图,委托方法等的帖子.其中大部分是代码片段,遗憾的是我的初学者水平有点过头了.
将不胜感激如何实现这一点的简单解释.特别是关于哪些文件需要更改的说明会很棒.
谢谢
Kum*_* KL 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];
}
Run Code Online (Sandbox Code Playgroud)
Coc*_*aEv 10
看起来你有一个良好的开端.由于您有标签栏设计,因此您必须选择如何显示登录页面以及何时执行此操作.
您必须在显示标签栏之前显示它,或者在第一个视图控制器中放置逻辑以启动登录过程.还有其他方法,但它们变得更复杂,我想立即给你基本的选择.
这是我推荐的一般概念.
a)在某处创建一个持久存储变量,以确定用户是否登录.
b)在附加到tabbar的第一个视图控制器的View will load方法中添加对此标志的检查.
c)直接从视图控制器提供模态登录页面.如果他们登录,很好地解雇它,如果没有,他们就会被困在模态页面上.
所以,基本上这是怎么做的:
为了解释,我将打电话给你的第一个视图控制器 - 你的tabbar控制器上的第一个标签 - fviewController - 好吗?
在fviewController.m中
-(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];
}
}
Run Code Online (Sandbox Code Playgroud)
看起来你正在使用故事板和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
Run Code Online (Sandbox Code Playgroud)
解雇模态视图.从技术上讲,您应该使用委托回调来执行此操作,但如果您尝试保持简单,那么这应该没问题
[self dismissViewControllerAnimated:YES completion:^{
}];
Run Code Online (Sandbox Code Playgroud)
所以你的逻辑就像这样 - 他们登录了吗?是,然后为登录设置YES状态,然后关闭.如果他们不登录,什么也不做.他们被困住了.
最后,如果您需要设置登录控制器,您将使用方法:prepareForSegue ...在segue发生之前初始化变量.如果你正在做一些教程,你可能已经阅读过它.
嗯......希望有所帮助.这是一种非常基本的方法.如果能够正常工作,您可以继续为其添加更多安全性和功能.
祝你好运.
| 归档时间: |
|
| 查看次数: |
21623 次 |
| 最近记录: |