【发布时间】:2016-11-05 03:24:06
【问题描述】:
我正在做一个使用标签栏系统的项目。 tabbar 的一项是 JobPostingViewController。我将它嵌入到 UINavigationController 中。在这个视图控制器中有一个名为添加新作业的 UIButton。我实现了 pushviewcontroller 去 CreateJobPostViewController。我需要添加 UIImagePickerController 来选择图像。当我点击完成按钮或从库中选择图像时,它会关闭 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)
}
【问题讨论】:
-
我以前从未见过这个问题。
imagePicker似乎在调用addImages之前已经定义。为什么?那是在其他地方使用吗?是否有其他代码同时工作?另外,您正在调用picker.dismissViewControllerAnimated,您应该要求父级(presentingViewController)解除模态控制器(即self.dismissViewControllerAnimated),而不是告诉被呈现者自行解除。 -
将 imagePicker 定义为全局变量没有其他意义。它不在任何地方使用。我尝试了您建议关闭图像选择器视图控制器的两个选项。我厌倦了寻找解决方案,我使用了另一种方法。谢谢您的建议。 @西蒙麦克劳林
-
能否多发些代码或多解释一下应用的布局。有很多人强调各种类似的问题和解决方案。
JobPostingViewController是容器视图吗?还是在容器视图内?这个屏幕是怎么打开的? when the picker is dismissed it will trigger theviewWillAppear/viewDidAppear,viewDidLayoutSubviewsmethods onCreateJobPostViewController.你在这些方法中做了什么吗? -
当拾取器被拒收时,也不调用这些方法。它直接加载标签栏项目。我已经创建了一个在名为 TabViewController 的类中创建标签栏的方法。它直接调用该方法并重新加载标签栏。
-
非常感谢西蒙。毕竟我解决了这个问题。实际上,以编程方式创建标签栏存在问题。因为你,我解决了问题。非常感谢。我很感激。 :) :) :D
标签: ios objective-c iphone swift uiimagepickercontroller