0

segueメソッドからプログラムで a を呼び出したいのですimagePickerController:didFinishPickingMediaWithInfo:が、うまくいきません。クラッシュしませんが、機能しません。それは何もしません。prepareForSegueメソッドは正しく呼び出されます。

- (void) imagePickerController:(UIImagePickerController *)picker 
         didFinishPickingMediaWithInfo:(NSDictionary *)info {

   rutaFoto = [info valueForKey:UIImagePickerControllerMediaURL];
   [self dismissModalViewControllerAnimated:YES];
   [self performSegueWithIdentifier:@"aGaleria" sender:self];
}

segueリンクUIViewControllers2.performSegueWithIdentifierそして、他の場所から (たとえば、プッシュUIButtonメソッドから)セグエを呼び出すと、機能します。何か案は?

4

2 に答える 2

3

DismissViewControllerAnimated:completion: を使用してみて、performSegueWithIdentifier:sender: への呼び出しを完了ブロックに入れます (dismissModalViewControllerAnimated: は減価償却されているため、使用しないでください)。

      [self dismissViewControllerAnimated:YES completion:^{
           [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
      }];
于 2012-11-23T17:24:53.693 に答える
-2

これは、現在の ViewController の変更、didFinishPickingMediaWithInfo からトリガーされた元の ViewController への移行を既に処理しているメイン スレッドと関係があるのではないかと考えています。

1 つ目は、aGaleria セグエを呼び出すときに遅延を設定することです。

sleep(2.0);
[self performSegueWithIdentifier:@"aGaleria" sender:self];

2 番目のより優れたオプションは、PickingMediaWithInfo を終了した後で、ビューからセグエを実行することです。元の ViewController で新しい NSNotificationCenter トリガーを設定し、didFinishPicking メソッドで遅延してトリガーすることができます。

于 2012-11-23T15:29:14.350 に答える