1

我创建了一个名为 view2 的类,它是 UIView 控制器的子类,当我运行程序时,计时器工作正常,但是当它改变屏幕时,它只是变黑,而不是我在 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];

}
4

2 回答 2

0

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

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

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

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

一些补充说明:

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

编辑:

使用情节提要,您必须手动执行在 2 个视图之间设置的序列:

- (void)onTimer {
    [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];
}
于 2012-12-21T19:44:11.777 回答
0

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

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

于 2012-12-21T19:51:51.887 回答