在标签栏控制器之前显示登录视图控制器

时间:2011-07-25 08:01:20

标签: iphone objective-c uiviewcontroller uitabbarcontroller

我是iphone开发的新手。我正在开发一个包含四个选项卡的iphone应用程序。我使用标签栏控制器实现了它。但现在我需要在标签栏控制器之前显示没有标签的登录屏幕。我已经尝试了很多方法,但没有得到我想要的方法。

任何人都可以通过代码片段解释如何执行此操作吗?

5 个答案:

答案 0 :(得分:2)

创建一个新类LoginViewController。当您的应用程序启动时,然后将视图添加到窗口。现在登录成功后,将其从superview中删除并添加MainController。

答案 1 :(得分:1)

创建一个UITabBarController的子类(尽管苹果不建议这样做),但为了这个目的,它应该没问题,并在viewWillAppear中执行此操作

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    BOOL isLogged in = //do something to determine if you're logged in
    if(!loggedIn){
        LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewControllerNibHere" bundle:nil];
        [self presentModalViewController:loginViewController animated:YES]; //or NO if you don't want it animated
        [loginViewController release];
    }
}

或者将其添加到UITabBarController的类别并将其导入应用程序委托或您使用UITabBarController的任何地方

答案 2 :(得分:0)

  • 使用表示登录屏幕的nib创建一个新的UIViewController子类(我将其称为SignInViewController)。
  • 打开MainWindow.nib文件并添加新的UIViewController
  • 将新的UIViewController的类类型设置为SignInViewController
  • 将UIWindow的rootViewController插座设置为新的SignInViewController
  • 现在创建一个新的nib文件并将现有的UITabBarController复制到它(最好分割笔尖而不是单个大笔笔)
  • 返回MainWindow.xib,更改现有的UITabBarController属性以指定刚刚创建的nib名称

答案 3 :(得分:0)

检查此链接的源代码

它使用Login Controller作为带有4个选项卡的模态视图

http://code.google.com/p/tweetero/source/checkout

我也试过这种方式,

在我的第一个标签视图中 - 在viewDidAppear - 我会检查Login = YES然后

显示LoginController

- [self.tabbarcontroller presentMOdalViewcontroller:LoginView animated:YES];

所以每次你点击第一个标签 - 如果你需要登录一个标志 - 检查它&显示登录视图

希望这有助于。

答案 4 :(得分:0)

执行此操作的最佳方法是创建一个新的LoginViewController,就像其他人提到的那样,然后在对用户进行身份验证后立即将rootviewController设置为tabBarcontroller。以下是如何在swift中执行此操作,这是在LoginViewController中验证用户后立即放置的片段

let tabBarController = self.storyboard?.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = tabBarController

TabBarController是标签栏控制器的故事板ID。它可以是你给它的任何名字。