0

そのため、プログラムの非常に奇妙な動作に気付きました。これは単純化されたコード スニペットであり、ビルドして実行すると何が起こるかを説明します。

-(void)viewDidLoad {
   [super viewDidLoad];
   ...
   if (self.sampleBool) {
       [self performSegueWithIdentifier:@"mySegue" sender:self];
   }
   else {
       // do stuff
   }
}
...
-(IBAction)myMethod:(UITapGestureRecognizer*)sender {
    ...
    [self performSegueWithIdentifier:@"mySegue" sender:self];
}

UITapGestureRecognizer を介してセグエが正常にトリガーされるため、セグエが正しくリンクされていることがわかります。ただし、self.sampleBool が true で、viewDidLoad 内で performSegueWithIdentifier が呼び出された場合、セグエは発火しません。

誰でも推測できますか?ヘルプやアドバイスをいただければ幸いです。

ありがとう

4

2 に答える 2

0

ViewDidLoad 内に別の ViewController をプッシュしようとすると、viewDidLoad ではビューコントローラーがまだ準備できていないため、問題が発生します。単純な方法は、viewWillAppear または viewDidappear を使用しようとしています。

于 2012-06-27T22:05:01.277 に答える
0

viewWillAppearorviewDidAppearイベントを使用してみて、動作するかどうかを確認してください。私の推測viewDidloadでは、物事は完全に配線されていないため、セグエインは関係ないかもしれません.

一方で、ここに設計上の問題はありますか? あなたの条件が真の場合、そのセグエはまったく発生する必要がありますか? おそらく、そのビューが呼び出されてロードされる前に、さらに上流でテストを行うことができます。

于 2012-06-27T21:12:59.197 に答える