0

我想segueimagePickerController:didFinishPickingMediaWithInfo:方法中以编程方式调用 a ,但它不起作用。它不会崩溃,但不起作用。它什么也不做。该prepareForSegue方法被正确调用。

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

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

segue链接UIViewControllers2 。如果我performSegueWithIdentifier从其他地方(例如从推送UIButton方法)调用 segue,它会起作用。有任何想法吗?

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 之间的转换。

我会尝试两件事,第一是在您调用 aGaleria segue 时延迟:

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

第二个更好的选择是在完成PickingMediaWithInfo 之后从视图中执行segue。您可以在原始 ViewController 中设置一个新的 NSNotificationCenter 触发器,然后在 didFinishPicking 方法中延迟触发它:

于 2012-11-23T15:29:14.350 回答