我想在我的 iOS 应用程序启动时问用户一个问题。我有一个视图控制器来显示文本和一个按钮来回答。
我在我的应用程序委托文件中也有这个来检测它是否已经被回答过:
if(![[NSUserDefaults standardUserDefaults] valueForKey:@"questionAnswered"])
我知道如何向更改questionAnswered
值的按钮添加方法。
我在上面的 if 语句中放了什么来使视图控制器出现?
我想在我的 iOS 应用程序启动时问用户一个问题。我有一个视图控制器来显示文本和一个按钮来回答。
我在我的应用程序委托文件中也有这个来检测它是否已经被回答过:
if(![[NSUserDefaults standardUserDefaults] valueForKey:@"questionAnswered"])
我知道如何向更改questionAnswered
值的按钮添加方法。
我在上面的 if 语句中放了什么来使视图控制器出现?
最好在您的初始视图控制器中检查这一点并显示条款和条件视图。以下将从您的视图控制器初始化并呈现视图:
UIViewController *tncView = [self.storyboard instantiateViewControllerWithIdentifier:@"TermsViewController"];
[tncView setModalInPopover:YES];
[tncView setModalPresentationStyle:UIModalPresentationFormSheet];
[tncView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:tncView animated:YES completion:NULL];
然后,从您的 T&C 视图控制器中退出:
[self dismissViewControllerAnimated:YES completion:NULL];
更新:如果您为视图使用 .xib 文件,则只需将其初始化为:
termsViewController *tncView = [[termsViewController alloc] initWithNibName:@"termsView" bundle:nil];
termsViewController
EULA 的视图控制器的类名在哪里,并且termsView
是 xib/nib 文件的名称,没有扩展名(iOS 4.0+ 不需要扩展名)。
如果您没有使用 nib/xib 并以编程方式编写视图控制器:
termsViewController *tncView = [[termsViewController alloc] init];
如果使用故事板,您将使用我在上面发布的内容:
UIViewController *tncView = [self.storyboard instantiateViewControllerWithIdentifier:@"TermsViewController"];
初始化视图控制器后,设置它的显示属性:
[tncView setModalInPopover:YES];
[tncView setModalPresentationStyle:UIModalPresentationFormSheet];
[tncView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
最后,提出观点。我会在您的初始视图控制器的viewDidAppear
方法中执行此操作:
- (void)viewDidAppear:(BOOL)animated
{
[self presentViewController:tncView animated:YES completion:NULL];
}
让我知道这是否适合您。
苹果在 HIG 中声明:
如果您为您的 iOS 应用程序提供最终用户许可协议(或 EULA),App Store 会显示它,以便人们在获得您的应用程序之前可以阅读它。
如果可能,请避免要求用户在首次启动您的应用程序时表明他们同意您的 EULA。在没有显示协议的情况下,用户可以毫不拖延地享受您的应用程序。但是,即使这是首选的用户体验,也可能并非在所有情况下都可行。如果您必须在您的应用程序中显示许可协议,请以与您的用户界面协调一致的方式执行此操作,并将给用户造成的不便降至最低。
如果可能,请在您的应用说明或 EULA 中提供免责声明。用户随后可以在 App Store 中查看免责声明,您可以平衡业务需求和用户体验需求。
Apple 提供了一个在 iTunes Connect 中放置自定义 EULA 的位置。