我想以编程方式从segue
方法调用imagePickerController:didFinishPickingMediaWithInfo:
,但它不起作用。它不会崩溃,但不起作用。它什么都不做。正确调用prepareForSegue
方法。
- (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
rutaFoto = [info valueForKey:UIImagePickerControllerMediaURL];
[self dismissModalViewControllerAnimated:YES];
[self performSegueWithIdentifier:@"aGaleria" sender:self];
}
segue
链接2 UIViewControllers
。
如果我从其他地方使用performSegueWithIdentifier
来调用segue(例如来自推送UIButton
方法),则可以正常工作。
有什么想法吗?
答案 0 :(得分:3)
尝试使用dismissViewControllerAnimated:completion:并在完成块中调用performSegueWithIdentifier:sender:(dismissModalViewControllerAnimated:无论如何都要折旧,所以你不应该使用它。)
[self dismissViewControllerAnimated:YES completion:^{
[self performSegueWithIdentifier:@"aGaleria" sender:self];
}];
答案 1 :(得分:-2)
我想知道这是否与已经处理当前ViewController中的更改的主线程有关,即didFinishPickingMediaWithInfo与触发它的原始ViewController之间的转换。
我会尝试两件事,第一件事就是当你打电话给aGaleria赛车时要拖延:
sleep(2.0);
[self performSegueWithIdentifier:@"aGaleria" sender:self];
第二个也是更好的选择是在完成PickMediaWithInfo之后从视图中执行segue。您可以在原始ViewController中设置一个新的NSNotificationCenter触发器,然后在didFinishPicking方法中延迟触发它: