iOS和xcode:如何仅在首次使用应用程序时创建特殊视图的模式序列

iOS和xcode:如何仅在首次使用应用程序时创建特殊视图的模式序列,ios,objective-c,xcode,viewcontroller,viewwillappear,Ios,Objective C,Xcode,Viewcontroller,Viewwillappear,我想做一个“条款和条件”屏幕,在应用程序第一次打开时弹出。在这个视图中,我会添加一个按钮,上面写着“同意”,点击它,代码就会执行: [self dismissViewControllerAnimated:YES completion:nil]; …并将转到应用程序的第一个视图 我目前使用的选项卡栏控制器有4个视图控制器。所以基本上,我只需要在ViewController中有一些方法会出现在我的第一个ViewController上,用于检查NSUserDefault键:值。应用程序第一次打开时,

我想做一个“条款和条件”屏幕,在应用程序第一次打开时弹出。在这个视图中,我会添加一个按钮,上面写着“同意”,点击它,代码就会执行:

[self dismissViewControllerAnimated:YES completion:nil];
…并将转到应用程序的第一个视图

我目前使用的选项卡栏控制器有4个视图控制器。所以基本上,我只需要在ViewController中有一些方法会出现在我的第一个ViewController上,用于检查NSUserDefault键:值。应用程序第一次打开时,它将为零。在他们单击“同意”后,我会将其设置为1,代码位将不再执行

您能否提供一些代码来完成在加载应用程序时将视图从firstViewController的视图路由到此备用视图控制器的任务


谢谢

在FirstViewController中的ViewWillDisplay方法中,选中NSUserDefaults,然后显示TermsViewController。用户在TermsViewController中单击“同意”后,设置NSUserDefaults,然后调用

[self.presentingViewController dismissModalViewControllerAnimated:YES] 

popover窗口的使用可能会变得复杂。如果你对Objective-C没有什么经验,可以尝试以下方法

- (void)viewDidLoad {

    if ([termsvalue == 0]) {
        NSString *msg = [NSString stringWithFormat:@"Do you agree with the terms of use?"];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"- Confirmation -"
                                                        message:msg
                                                       delegate:self
                                              cancelButtonTitle:@"Disagree"
                                              otherButtonTitles:@"I agree", nil];
        [alert setTag:100];
        [alert show];
    }
}

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView { // Validation
if ([alertView tag] == 100) {
    return YES;
}
}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { // Go
if ([alertView tag] == 100) {
    if (buttonIndex == 1) {
        // The user has agreed
    }
}
}

您所谓的“此备用视图控制器”到底是什么?为什么不使用alertview显示一次性消息?我从未使用过alertview。。。我如何触发它发生?是否有任何方法可以使用户在未单击此alertview中的“同意”之前无法继续?如果是这样,那就是我要寻找的答案!听起来不错,但是如何让FirstViewController启动模态视图?我知道的唯一方法是在序列图像板中创建一个新视图并控制单击并从按钮拖动一个链接:(显然,我希望此模式视图在应用程序第一次启动时出现,而不必每次都让用户单击任何东西以获得控制。单击将链接从FirstViewController拖到TermsViewController,将segue标识符命名为“showTerms”,然后在FirstViewController中调用[self-PerformsgueWithIdentifier:@“showTerms”。)发件人:无];太棒了,谢谢你的建议。后续问题:我有一个TabBarController,第一个选项卡栏视图链接到FirstViewController。在FirstViewController的viewDidLoad中,我放置了以下代码:[self-PerformsgueWithIdentifier:@“myModalSegue”发件人:self];我想在加载第一个视图时转换到此序列,但我遇到以下错误:尝试在其视图不在窗口继承者权限中的情况下显示!有没有解决方法?现在调用[self-performSegueWithIdentifier:@“myModalSegue”发送者:self]还为时过早在viewDidLoad中,此时还没有准备任何与UI相关的内容,您可以在ViewDidAppear中调用它。因此,我按照指定创建了模式序列并将其命名为“termsAndConditions”,然后,在FirstViewController(这是我的TabBarController中的第一个视图)中,我放入[self-PerformsgueWithIdentifier:@“termsAndConditions”发送者:self]在viewDidAppear方法中。但是,我仍然收到以下错误:警告:尝试呈现,并且其视图不在窗口继承人权限中!感谢您对我的耐心,我正在尽我最大的努力!任何建议都将不胜感激。