【问题标题】:iOS First Launch show Terms and ConditionsiOS 首次发布节目条款和条件
【发布时间】:2014-05-02 22:19:38
【问题描述】:

我需要以下代码的帮助。我的目标是显示 UIViewController “条款”(已经存在于我的 Storyboard 中,并且我已经在 Storyboard ID 中指定了名称术语)。如果应用程序已经打开并且用户接受了 T&C,则显示正常的 UIViewController。

FIRSTVIEWCONTROLLER.H

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController

@end

@interface First : UIViewController

@end

@interface Terms: UIViewController

@end

FIRSTVIEWCONTROLLER.M

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad: (BOOL)animated
{
    [super viewDidLoad];



    NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];

    BOOL isAccepted = [standardUserDefaults boolForKey:@"iHaveAcceptedTheTerms"];

    if (!isAccepted) {
        [self presentViewController:Terms animated:YES completion:nil];
    } else {
        [self.navigationController pushViewController:First animated:YES];
    }

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

事实上,我收到 2 个错误:“意外的接口名称 'Terms'/'First': 预期的表达式”。

请看故事板:http://i.stack.imgur.com/bi6aT.png

请帮帮我。 xcode初学者。

【问题讨论】:

  • 您在哪里看到错误?指出给您带来问题的确切代码。
  • 您的故事板看起来很奇怪,因为您没有指向条款的箭头,而您有很多指向标签栏控制器的箭头。这一切似乎都颠倒了(但我不知道它打算做什么)。如果一个 XCode/storyboards 的初学者从一个视图控制器开始,运行它,然后添加另一个并再次运行,然后添加另一个并再次运行等等。慢慢地构建它
  • @rmaddy 错误出现在[self presentViewController:Terms animated:YES completion:nil];[self.navigationController pushViewController:First animated:YES]; 谢谢。
  • 您正在尝试传递类的名称,而不是创建视图控制器的实例。

标签: ios objective-c uiviewcontroller


【解决方案1】:

首先,从 .h 中删除这些行,因为它们是不必要的:

@interface First : UIViewController

@end

@interface Terms: UIViewController

@end

其次,您的 Storyboard 看起来不太正确...从 FirstViewController,您需要在视图和两个潜在的后续视图控制器之间创建 segues,即“First”和“Terms”,使用方法 I '在这里指定:https://stackoverflow.com/a/20690072/2274694;然后用标识符标记这些segues。

这样,如果您想根据条款是否已被接受而转至相关视图控制器,您可以使用相关标识符执行转场,例如:

if (!isAccepted) {
    [self performSegueWithIdentifier:@"firstSegue" sender:self];
} else {
    [self performSegueWithIdentifier:@"termsSegue" sender:self];
}

【讨论】:

  • “termsSegue”从哪里开始?我的意思是从哪个动作开始的?
  • 不要将它与情节提要中的特定动作联系起来......只需创建一个一般的转场。我在这个答案中解释了如何:stackoverflow.com/a/20690072/2274694。这样,segue 将发生在您在 viewDidLoad 中指定的位置。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多