无法弄清楚如何使用NSTimer更改视图

时间:2012-12-21 19:36:37

标签: objective-c cocoa views switch-statement nstimer

我创建了一个名为view2的类,它是一个UIView Controller子类,当我运行程序时,计时器工作正常,但是当它改变屏幕时它只会变成黑色,而不是我在view2上的图片。这是我在开放视图的.m上的代码,任何人都可以看到这出错的地方吗?

- (void)viewDidLoad
{
    randomMain = [NSTimer scheduledTimerWithTimeInterval:(2) target:self selector:@selector(onTimer) userInfo:nil repeats:NO];

    [super viewDidLoad];
}


-(void)onTimer{

    view2 *second= [[view2 alloc] initWithNibName:nil bundle:nil];
    [self presentViewController:second animated:YES completion:nil];

}

2 个答案:

答案 0 :(得分:0)

您必须指定要加载的xib文件的名称(不带扩展名):

view2 *second = [[view2 alloc] initWithNibName:@"MyView2Xib" bundle:nil];

或者如果您以编程方式创建GUI,只需使用简单的init

view2 *second = [[view2 alloc] init];

其他一些评论:

  • 类名应始终以大写字母开头,以区别于变量。
  • 在您的子类名称中包含超类'名称的一部分是个好主意。如果我看到一个名为View2的类,我会认为它是一个UIView子类。我宁可称之为ViewController2
  • 无需将间隔放在括号中。
  • NSTimer的动作应该有一个参数(本身)。

修改

使用故事板,您必须手动执行在2个视图之间设置的序列:

- (void)onTimer {
    [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];
}

答案 1 :(得分:0)

我认为viewDidLoad不适合您的目的。您应该使用viewDidAppear。

DrummerB的所有言论都非常有效且非常重要。