簡體   English   中英

從didFinishPickingMediaWithInfo調用performSegueWithIdentifier

[英]Call performSegueWithIdentifier from didFinishPickingMediaWithInfo

我想以編程方式從imagePickerController:didFinishPickingMediaWithInfo:方法中調用segue ,但是它不起作用。 它不會崩潰,但是不起作用。 它什么也沒做。 prepareForSegue方法被正確調用。

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

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

segue鏈接2個UIViewControllers 而且,如果我從其他地方(例如,從push UIButton方法)使用performSegueWithIdentifier調用segue,它就可以工作。 有任何想法嗎?

嘗試使用dismissViewControllerAnimated:completion :,並將對performSegueWithIdentifier:sender:的調用放在完成塊中(dismissModalViewControllerAnimated:無論如何都已貶值,因此您不應該使用它)。

      [self dismissViewControllerAnimated:YES completion:^{
           [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
      }];

我想知道這是否與已經在當前ViewController中進行了更改的主線程有關,即didFinishPickingMediaWithInfo與觸發它的原始ViewController之間的過渡。

我會嘗試兩件事,第一件事是延遲致電aGaleria segue的時間:

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

第二種也是更好的選擇,是在完成PickingMediaWithInfo之后從視圖執行segue。 您可以在原始ViewController中設置新的NSNotificationCenter觸發器,然后在didFinishPicking方法中延遲地觸發它:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM