closuresUIImagePickerController也会closures呈现视图控制器
我正在使用tabbar系统的项目。 其中一个tabbar项是JobPostingViewController。 我将它embedded到UINavigationController中。 在这个视图控制器中有一个名为add new job的UIButton。我实现了pushviewcontroller去CreateJobPostViewController。 在那里我需要添加UIImagePickerController来select图像。 当我点击完成button或从库中select一个图像,它解雇了JobPostingViewController。 但它应该去CreateJobPostViewController。 任何人请帮助我。 提前致谢。
你可以从这个链接看到问题
在JobPostingViewController中的代码
@IBAction func openCreateJob(sender: AnyObject) { let vc = self.storyboard?.instantiateViewControllerWithIdentifier("CreateJobPostViewController") as! CreateJobPostViewController self.navigationController?.pushViewController(vc, animated: true) }
在CreateJobPostViewController中的代码
@IBAction func addImages(sender: AnyObject) { imagePicker.allowsEditing = false imagePicker.sourceType = .PhotoLibrary presentViewController(imagePicker, animated: true, completion: nil) } func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { picker.dismissViewControllerAnimated(true, completion: nil) } func imagePickerControllerDidCancel(picker: UIImagePickerController) { picker.dismissViewControllerAnimated(true, completion: nil) }
添加select器作为子视图
尝试添加imagepicker作为子视图到您的CreateJobPostViewController insted呈现它,然后将其从代理中的父级中删除
@IBAction func openCreateJob(sender: AnyObject) { var picker: UIImagePickerController = UIImagePickerController() picker.delegate = self picker.allowsEditing = false picker.sourceType = .PhotoLibrary self.addChildViewController(picker) picker.didMoveToParentViewController(self) self.view!.addSubview(picker.view!) }
接着
func imagePickerControllerDidCancel(picker: UIImagePickerController) { picker.view!.removeFromSuperview() picker.removeFromParentViewController() }
为了呈现
显示picker over currentcontext选项,如编辑取消select,
使用picker.modalPresentationStyle = .overCurrentContext
//呈现之前
presentViewController(picker, animated: true, completion: nil)
通过将图像select器的modalPresentationStyle设置为“OverCurrentContext”来解决问题:
picker.modalPresentationStyle = .overCurrentContext
你可以使用:
picker.modalPresentationStyle = .overCurrentContext
但取决于你的屏幕布局,最好使用:
picker.modalPresentationStyle = .overFullScreen
否则您的“取消”,“重新拍摄”和“使用照片”button可能不可见。