Ios 从didFinishPickingMediaWithInfo调用PerformsgueWithIdentifier

Ios 从didFinishPickingMediaWithInfo调用PerformsgueWithIdentifier,ios,objective-c,iphone,ipad,segue,Ios,Objective C,Iphone,Ipad,Segue,我想从imagePickerController:didFinishPickingMediaWithInfo:方法以编程方式调用segue,但它不起作用。它不会崩溃,但不工作。它什么也不做。正确调用了prepareforsgue方法 - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { r

我想从
imagePickerController:didFinishPickingMediaWithInfo:
方法以编程方式调用
segue
,但它不起作用。它不会崩溃,但不工作。它什么也不做。正确调用了
prepareforsgue
方法

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

   rutaFoto = [info valueForKey:UIImagePickerControllerMediaURL];
   [self dismissModalViewControllerAnimated:YES];
   [self performSegueWithIdentifier:@"aGaleria" sender:self];
}
segue
链接2
UIViewControllers
。 如果我从其他地方(例如,通过按下
ui按钮
方法)调用带有
performsguewithidentifier
的segue,它就会工作。
有什么想法吗?

我想知道这是否与主线程已经在处理当前ViewController中的更改有关,即didFinishPickingMediaWithInfo到触发它的原始ViewController之间的转换

我会尝试两件事,第一件是在你打电话给aGaleria segue时延迟:

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

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

尝试使用DismissViewControllerInitiated:completion:并在completion块中调用performSegueWithIdentifier:sender:(dismissModalViewControllerAnimated:无论如何都是折旧的,所以您不应该使用它)


“aGaleria”是什么类型的segue?模式?推送?尝试在ViewDidDesible中调用segue。它是模式的。我尝试从ViewDidDesible中调用它,但它不起作用…我尝试了两者,它们都不起作用。didFinishPickingMediaWithInfo方法在库中选择图片后收集信息,但只有当didFinishPickingMediaWithInfo时,库控制器才会关闭方法完成,所以当我调用segue时,模拟器仍然显示库,而不是我的主viewController。所以这一定是问题所在,但我不知道如何解决它…如果我写下以下内容:
[self dismissViewControllerAnimated:YES completion:[self performsguewithidentifier:@“aGaleria”发送者:self]];
我收到了这个错误:将“void”发送到不兼容类型的参数“void(^)(void)“哦,对不起,我的语法错误。它起作用了!非常感谢!我的主viewController显示了一会儿,然后转到Galeria viewController。有没有办法避免显示主viewController?您是否尝试过按相反的顺序操作?先执行segue,然后关闭imagePickerController?是的,我尝试过,但没有成功。”不起作用。如果我在didFinishPickingMediaWithInfo方法完成之前调用segue,则segue不会执行任何操作。
      [self dismissViewControllerAnimated:YES completion:^{
           [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
      }];