我有一个UINavigationController通过self.setViewControllers([self.homeController], animated: false)调出视图。家庭控制器具有一个按钮,可通过委托向UIImagePickerController发出信号来弹出UINavigationController。因此,导航控制器将调用self.presentViewController(imagePicker, animated: true, completion: nil)

所有这些都运行良好,并且弹出了我的图像选择器。取消它也可以实现我期望的效果,并带我回到homeController。但是,如果我选择“使用视频”,则实际上我想导航到另一个视图。所以我做到了

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:AnyObject]) {
        self.dismissViewControllerAnimated(true, completion: {
          self.pushViewController(self.detailController, animated: false)
        })
    }


奇怪的是,我短暂地看到了detailController,然后出现了homeController。跟踪viewWillLoad / viewWillAppear调用,看来我的详细信息控制器实际上确实已加载,然后出现。之后,homeController会立即执行相同的操作。因此,我怀疑这是一个排序问题,但是鉴于UIImagePickerControllerDelegate中只有两种方法,所以我看不到在其他地方可以这样做。

谁能建议正确的方法来实现这一目标?

最佳答案

事实证明,它比我想像的还要上游-我在viewWillAppear中执行逻辑以推送控制器。应该在viewDidLoad中这样做。移动它就可以了。

关于ios - UIImagePickerController和UINavigationController是否在完成导航?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38164517/

10-13 09:03