【问题标题】:UIViewController presented once when the app launches [closed]UIViewController 在应用程序启动时呈现一次[关闭]
【发布时间】:2013-09-10 09:20:41
【问题描述】:

屏幕是应用程序启动时的第一页。用户只能单击接受并继续按钮继续。 此页面最初仅出现一次,当用户单击接受并继续按钮时,此页面不会出现在此应用程序的后续启动中。 只有当用户清除了与此应用程序相关的所有数据时,此页面才会在启动时再次出现。

【问题讨论】:

  • ok,如果可能,然后删除评论:没问题,只是通知你

标签: cocoa-touch nsuserdefaults xib uivewcontroller


【解决方案1】:
  1. 创建一个视图控制器。并且,在应用启动时加载它。
  2. 当用户点击“接受并继续”时,继续在 Plist 中保存一个 BOOL 值,NSUserDefault。
  3. 下次加载应用时检查此值并根据您保存的 BOOL 值显示屏幕。
  4. 当用户清除数据后执行同样的操作。

【讨论】:

    【解决方案2】:

    你可以使用NSUserDefaults

    //第一次启动时设置值如下:

    [[NSUserDefaults standardUserDefaults] setValue:@"YES" forKey:@"LaunchingFirstTime"];
    

    之后

    NSString *launch = [[NSUserDefaults standardUserDefaults]valueForKey:@"LaunchingFirstTime"];
    
    if([launch isEqualToString:@"YES"]){
        //Don't Show Screen
    }
    else{
        //Show Screen
    }
    

    希望对您有所帮助

    【讨论】:

    • Xman 我使用了这个逻辑 - (void)viewDidLoad welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil]; [self presentViewController:temp 动画:YES 完成:^(void){}]; } else{ NSLog(@"screen");但它显示警告:尝试在 上呈现 ,其视图不在窗口层次结构中!并且欢迎屏幕没有出现
    • @Ram :这是不同的问题..
    • 这个逻辑是有效的,但我什么时候开始使用这些应用程序并再次出现
    • NSUserDefaults 可能没有机会保存,具体取决于进程的终止方式。检查这个old question
    【解决方案3】:

    您似乎在谈论启动画面。如果您想要一些自定义按钮,例如接受和继续,您可以创建一个自定义视图并从 AppDelegate 的 didFinishLaunching 方法调用该视图。点击按钮可以添加相应的方法。

    【讨论】:

      【解决方案4】:
       if ([[NSUserDefaults standardUserDefaults] boolForKey:IS_FIRST_LOGIN])
      {
          showYourPage();
      }
      #########In your Page#######
      -(void) acceptButtonClicked
      {
          [[NSUserDefaults standardUserDefaults] setBool:NO forKey:IS_FIRST_LOGIN];
      }
      

      【讨论】:

      • 我在 viewDidLoad 中使用了这个逻辑,但它不工作显示警告:尝试在 上呈现 ,其视图不在窗口层次结构中!
      【解决方案5】:

      你可以这样做

      self.userDefaults = [NSUserDefaults standardUserDefaults];
      NSString *str = [self.userDefaults valueForKey:@"SecondLaunch"];
      NSLog(@"the string value is : %@",str);
      
      if ([str isEqualToString:@"Second"]) {
          NSLog(@"It's Second Launch");
      } else {
          NSLog(@"It's First Launch");
          [self.userDefaults setObject:@"Second" forKey:@"SecondLaunch"];
          [self.userDefaults synchronize];        
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多