为什么';在Swift中从父视图控制器中删除后,我的视图是否会消失?
我正在使用sprite工具包制作一个应用程序,所以我的场景/视图都是SKView选项。然而,我正在尝试允许用户上传/拍照,在这方面一切都很好。然而,在用户选择一张照片之后,我的图像视图控制器以某种方式再次设置动画,并且我之前所在的场景不再启用交互,因此它基本上是冻结的。我不明白为什么会这样。。。这就是我迄今为止所尝试的: 当提供选择照片的选项时,我所处的场景为什么';在Swift中从父视图控制器中删除后,我的视图是否会消失?,swift,uiview,uiviewcontroller,uiimagepickercontroller,Swift,Uiview,Uiviewcontroller,Uiimagepickercontroller,我正在使用sprite工具包制作一个应用程序,所以我的场景/视图都是SKView选项。然而,我正在尝试允许用户上传/拍照,在这方面一切都很好。然而,在用户选择一张照片之后,我的图像视图控制器以某种方式再次设置动画,并且我之前所在的场景不再启用交互,因此它基本上是冻结的。我不明白为什么会这样。。。这就是我迄今为止所尝试的: 当提供选择照片的选项时,我所处的场景 func photoToController(sender: UIButton){ var button = sender
func photoToController(sender: UIButton){
var button = sender
let controller = imageViewController()
sender.superview?.removeFromSuperview()
view?.addSubview(controller.view)
controller.pickPhoto(sender: &image, button: &imageUploader, buttonsender: &button)
}
允许用户处理照片库/相机的ViewController
class imageViewController : UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var image = UIImageView()
var Abutton = UIButton()
var takingPhoto = false
override func viewDidLoad() {
print("imgviewloaded")
}
override func viewDidAppear(_ animated: Bool) {
print("image view is animated")
}
func pickPhoto(sender: inout UIImageView, button: inout UIButton, buttonsender: inout UIButton) {
let types = [UIImagePickerControllerSourceType.photoLibrary,UIImagePickerControllerSourceType.camera]
if UIImagePickerController.isSourceTypeAvailable(types[buttonsender.tag]) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = types[buttonsender.tag]
if buttonsender.tag == 1 {takingPhoto = true
imagePicker.allowsEditing = false
} else {
imagePicker.allowsEditing = true
}
image = sender
Abutton = button
self.present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
self.removeFromParentViewController()
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
image.image = info[UIImagePickerControllerOriginalImage] as? UIImage
if takingPhoto{image.contentMode = .scaleToFill}
if image.image == info[UIImagePickerControllerOriginalImage] as? UIImage{
savedPhotos.saveNewPhoto(newPhoto : image.image!)
}
image.backgroundColor = UIColor.white
Abutton.setTitle("", for: .normal)
picker.dismiss(animated: true, completion: nil)
self.removeFromParentViewController()
}
}
为什么每次单击按钮时都要实例化一个
imageViewController()
?这只是我想出的第一个有效的解决方案,我想我会马上删除它。我从来没有把视图控制器搞得一团糟,这不是一种正常的工作方式吗?这几乎肯定不是你想要的。那么我该怎么做呢,因为我认为我需要初始化控制器,以便访问照片/相机