1

UIView Controllerサブクラスであるview2というクラスを作成しました。プログラムを実行すると、タイマーは正常に機能しますが、画面が変わると、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です。
  • 間隔を括弧で囲む必要はありません。
  • のアクションには、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 に答える