我正在学习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/