我正在学习iOS,并正在开发我的第一个iPone应用。我想向我的应用程序添加功能:如果用户之前已经登录,我想将用户重定向到主视图。否则,我想将用户重定向到登录视图。

我已经阅读ios change storyboard default view controller at run time,但是我想知道是否可以编写决定AppDelegate中根视图的代码。因此,我不会有一个永远不会启动的视图。

这是我在AppDelegate中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];


    MainViewController *rootVC = [[MainViewController alloc] init];
    if (userNeverLogin) {
       LoginViewController *rootVC = [[LoginViewController alloc] init];
    }

    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:rootVC];
    return YES;
}

该代码不起作用(它不会触发任何错误,但是在模拟器中什么也不会显示)。我该如何修改?还是不可能在AppDelegate中实现此功能?

抱歉,我是iOS的新手。我希望这个问题不是愚蠢的。

最佳答案

我会尝试将要显示的视图控制器的整个初始化放入if-else语句中。您将rootVC设置为MainViewController,然后,如果用户尚未登录,则尝试将rootVC更改为LoginViewController

例如

id rootVC = nil;
if (userNeverLogin) {
   rootVC = [[LoginViewController alloc] init];
} else {
   rootVC = [[MainViewController alloc] init];
}

self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:rootVC];

更新视图以不显示

如果尚未创建用笔尖名称初始化视图控制器的方法(其他人建议您这样做),则有另一种解决方法。单击您的MainViewController.xib,然后在Interface Builder中单击File Owner。单击实用程序侧栏(屏幕右侧)左侧的第三个图标Identity Inspector,然后将自定义类更改为MainViewController。对LoginViewController.xib做同样的事情

关于objective-c - 如何在AppDelegate中决定rootView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13619221/

10-08 20:49