IOS:如何在第一次登录 ios 时处理 View Controller

标签 ios objective-c

当我第一次进入登录屏幕时,我将值存储在 NSUserDefaults .当我按下 signinButtonAction移至 DetailScreen它卡住了,永远不会前进。
我做了DetailScreen嵌入 NavigationcontrollerInitialViewController当我再次重新运行它时,即使下一个屏幕也没有导航到其他屏幕,它涉及 DetailScreen然后 DetailScreen卡住导航到其他屏幕。

我该如何处理?

我的代码在这里:
AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"email"])
    {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

        categoryVC *viewController = (categoryVC *)[storyboard instantiateViewControllerWithIdentifier:@"categoryVC"];
        [self.window setRootViewController:viewController];
    }
    else
    {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

        signInVC *viewController = (signInVC *)[storyboard instantiateViewControllerWithIdentifier:@"signInVC"];
        [self.window setRootViewController:viewController];
    }

SigninButtonAction我在做:
{
    categoryVC * second= [self.storyboard instantiateViewControllerWithIdentifier:@"categoryVC"];

    [self.navigationController pushViewController:second animated:YES];
}

enter image description here

最佳答案

我不会设置 RootViewController如果你有这样的工作流程。我会按原样实例化主视图 Controller ,如果您需要显示身份验证,我会使用 presentViewController .稍后,您可以执行解雇或类似的操作。

因此,在您的应用程序委托(delegate)中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    if (nil == [[NSUserDefaults standardUserDefaults] objectForKey:@"email"])
    {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        categoryVC *viewController = (categoryVC *)[storyboard instantiateViewControllerWithIdentifier:@"signInVC"];
        [self.window.rootViewController presentViewController:viewController animated:NO];
    }
}

然后,当您进行身份验证并通过时:
[self dismissViewControllerAnimated:TRUE completion:nil];

关于IOS:如何在第一次登录 ios 时处理 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042278/

相关文章:

ios - 在调用iOS SDK的电话期间播放音乐文件时出现问题

ios - 使用 AVPlayer 的全功能音乐播放器

c# - AudioQueueEnqueueBufferWithParameters 是否在 Monotouch 中实现?

iphone - NSString 与\0

ios - 为什么即使应用程序状态为 UIApplicationStateBackground,backgroundTimeRemaining 也会给出 DBL_MAX?

ios - 调用方法时属性访问导致未使用错误

objective-c - 为什么 UIProgressview 进度条不能调整大小?

ios - 将具有因子(例如@“3/4”)的NSString转换为NSNumber

ios - 为什么 Swift 推断出元类型 'Any.Type' 而不是类型 'Any' ?

objective-c - 开发一个在用户使用 xcode 登录之前运行的 osx 守护进程