App/View 的条件启动

Posted

技术标签:

【中文标题】App/View 的条件启动【英文标题】:Conditional start of App / View 【发布时间】:2013-07-18 09:16:56 【问题描述】:

(首先,如果这是一个非常琐碎的问题,请允许我道歉。我刚开始使用 ios 和 Objective-C)

我正在开发一个需要经过验证的用户帐户才能运行的 iOS 6 应用。注册分为两个阶段:用户首先必须注册他/她的姓名和电话号码,然后应用程序将联系后端服务,该服务将通过短信向用户发送验证码。然后,用户必须通过将该代码输入应用程序来继续。完成所有这些后,用户终于可以开始使用该应用了。

那么我的问题是:由于注册是一次性的过程,设计视图的流程的最佳方式是什么?我当前的解决方案基于“启动视图”,它确定用户在注册过程中的位置(未创建、未验证或完成),然后加载正确的视图。然而,这确实感觉有点麻烦,因为我真的在创建一个视图,之后我会立即将其关闭。

编辑:作为后续问题:如果我当前的解决方案可行,那么放置逻辑的最佳位置是什么方法?截至目前,它位于 viewDidLoad

【问题讨论】:

对于您的编辑,这完全取决于您想要实现的应用程序和功能。有关详细信息,请参阅 Apple 文档或此:***.com/questions/1579550/… 也检查一下:- ***.com/questions/5630649/… @Piyush 感谢您提供这些链接,我会看看。 【参考方案1】:

你可以这样移动。

制作 Root View Controller 就像闪屏一样。在根视图 控制器,只需检查应用程序是第一次运行还是 第n次(成功注册后)。如果应用程序正在运行 第一次,将用户导航到注册页面,如果用户有 注册成功,将用户导航到主屏幕(或您的 所需的屏幕)。

要检查应用程序是否第一次运行,您可以使用NSUserDefault

【讨论】:

感谢您的回复。你有这方面的任何消息来源还是来自个人经验?如果其他人回复不同的解决方案,我会稍作接受。 嗯,这是我自己的逻辑,我在我开发的许多应用程序中都使用过。我见过人们使用相同的。而且我坚持接受接受不会有任何问题。 好的,太好了。再次感谢。【参考方案2】:

您可以使用 NSUserDefault 来检查您的应用程序是否第一次运行.. 如果是第一次获取值,请保存并移至下一个视图。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
if (![defaults objectForKey:@"firstRun"])
  [defaults setObject:[NSDate date] forKey:@"firstRun"];

[[NSUserDefaults standardUserDefaults] synchronize];

礼貌:-https://***.com/a/1664275/1865424

我想这会对你有所帮助。

【讨论】:

谢谢。我正在寻求这个解决方案(昨天提交了类似的答案,所以“接受”在那里)。 @KGChristensen 没关系..如果您需要任何帮助,请进一步联系我。【参考方案3】:

我正在使用以下代码获取当前状态,然后加载所需的视图,检查是否有帮助:

-(NSString *)get_provision_status
NSString *status;
NSUserDefaults *prefrences = [NSUserDefaults standardUserDefaults];
status=[prefrences stringForKey:@"PROVISION_STATUS"];
if ([status isEqualToString:@"(null)"] || [status rangeOfString:@"(null)"].location!=NSNotFound)

    status=[NSString stringWithFormat:@""];
    return status;

else
    return status;





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

    /*Process for check current provision status*/
    current_status=[self get_provision_status];
if ([current_status isEqualToString:@""] || [current_status rangeOfString:@"(null)"].location!=NSNotFound) 
    NSLog(@"First Time View");


else if ([current_status isEqualToString:@"PROVISION-COMPLETED"]) 
    NSLog(@"Home Screen Or view When provision completed");


    else
    
        NSLog(@"Handle any other conditions if you have");
    
    self.window.rootViewController = self.navController;
    [self.window makeKeyAndVisible];
    return YES;

【讨论】:

以上是关于App/View 的条件启动的主要内容,如果未能解决你的问题,请参考以下文章

WiX:有条件地注册应用程序以在 Windows 启动时启动

重新启动集群时出错:重新启动 kube-proxy:等待 kube-proxy 启动以进行 configmap 更新:等待条件超时

内核中关于启动条件的英文说明整理

核心数据 - 多线程 - 启动时的竞争条件

在定义条件之前启动 Python 'while' 循环

仅在满足条件时如何启动调试器