在Cocoa Touch Tab Bar Application for IOS前添加登录屏幕

Joh*_*orf 13 iphone xcode objective-c tabbar ios

还在这里解决问题.我甚至不是很接近,但无论如何......我有一个从Xcode创建的TabBar应用程序.它有效我有三个标签视图,我知道如何操纵,等等.

我想在这整个事情面前放一个'登录'nib文件,要求用户回答(现在硬编码)用户名和密码.如果你做对了,那么,渲染标签部分,允许他们点击.

我有另一个我编写过的用户名和密码部分的应用程序,我在从那里获取逻辑时遇到了麻烦,并把它放在了TabApplication的前面.

有人有什么建议吗?

Mat*_*ick 17

在你的AppDelegate中,在application didFinishLaunchingWithOptions方法的最后你会看到:

[window addSubview:tabcontroller.view];
[window makeKeyAndVisible];
return YES;
Run Code Online (Sandbox Code Playgroud)

只需初始化您的登录视图控制器并在tabcontroller之后添加它,如下所示:

initialScreenViewController = [[InitialScreenViewController alloc] init];
[window addSubview:tabcontroller.view];
[window addSubview:initialScreenViewController.view];
[window makeKeyAndVisible];
return YES;
Run Code Online (Sandbox Code Playgroud)

在您登录viewcontroller中,在对用户进行身份验证后,您可以将其隐藏起来,如下所示:

[self.parentViewController.view setHidden:YES];
Run Code Online (Sandbox Code Playgroud)

如果您有注销功能,它允许您再次显示它.

  • 这就是最终为我工作的东西:[self.view removeFromSuperview]; (2认同)

Yuj*_*uji 16

标准方式如下:

  • 将与登录屏幕相关的所有内容打包到视图和UIViewController管理它的子类中.
  • application:didFinishLaunchingWithOptions:通过调用在app委托中以模态方式显示该视图

    LoginController*loginController= ... ; // create the view controller for the login screen
    [self.tabController presentModalViewController:loginController animated:YES];
    
    Run Code Online (Sandbox Code Playgroud)

这样,自动处理转换等之间的动画.

你在成功登录,以后还可以关闭它,它可以从内部来完成LoginController

[self.parentViewController dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

但是,登录完成后,我经常需要进行额外的设置.所以,我首先告诉应用程序委托登录已完成,然后执行

[self.tabController dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

来自应用代表.然后我可以在那里执行其他任务.

要与应用代表沟通,我会使用NSNotification,但这对您来说可能有点困难.

一种可能更容易理解的方法(但我觉得更丑)是定义一个方法,比如loginDone在app委托中.然后,在里面LoginViewController,你可以做到

MyAppDelegate*appDelegate=[[UIApplication sharedApplication] delegate];
[appDelegate loginDone];
Run Code Online (Sandbox Code Playgroud)