我有一个应用程序,在第一次安装应用程序时我会显示我的第一个 View Controller 。第二次运行后,我不想再显示第一个 View 。
我已经保存了一个设置值,它告诉我应用程序之前是否运行过,如果有,那么我调用 performSegueWithIdentifier。
我不能在 viewDidLoad 中调用它,因为这不起作用,但如果我在 viewDidAppear 中调用它,那么我会在一瞬间看到第一个 View 。
在第一个 View 被处理之前,我可以在某个地方调用它吗?
您需要在 AppDelegate.m
中执行此操作。
检查应用之前是否启动过,并相应地设置您的 window
rootViewController
。
-(void) setRootViewControllerByCheckingLoginStatus
{
BOOL isUserLogin = [[NSUserDefaults standardUserDefaults] boolForKey"IS_USER_LOGGEDIN"];
if (isUserLogin) {
// Set your controller if user has logged in.
YourController *yourController = [[YourController alloc] init]; // Or YourController *yourController = [storyBoard instantiateViewControllerWithIdentifier"YourControllerStoryBoardID"];
self.window.rootViewController = yourController;
}
else
{
//set other controller if user is not logged in. Or just let it be what it is by default.
}
}
在您的 -应用程序中调用上述方法:
didFinishLaunchingWithOptions:
你就完成了。
编辑您的评论..
黑屏意味着你没有正确实例化你的 ViewController。不要使用
[[YourController alloc] init];
使用
YourController *yourController = [storyBoard instantiateViewControllerWithIdentifier"YourControllerStoryBoardID"];
关于ios - 如何根据条件为 App 启动选择 rootViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982590/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |