我正在为我的应用设计新手入门流程。我想让用户选择一个头像,在 ImageView 中显示该头像,然后选择背景照片并将其显示在另一个 ImageView 中。目前,我已经对所有内容进行了编码,但出于某种原因,当我展示选择器 Controller 时,它默认为化身 Controller 。我想让头像按钮只控制头像按钮背景图片,背景按钮只控制标题图片背景图片。这是我的代码:
@IBAction func getBackground(sender: AnyObject) {
let backgroundPickerController = UIImagePickerController()
backgroundPickerController.delegate = self
backgroundPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
backgroundPickerController.allowsEditing = true
self.presentViewController(backgroundPickerController, animated: true, completion: nil)
}
@IBAction func selectAvatar(sender: AnyObject) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
imagePickerController.allowsEditing = true
self.presentViewController(imagePickerController, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
// set image for button
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.addAvatar.setImage(image, forState: .Normal)
// Dismiss controller
self.dismissViewControllerAnimated(false, completion: nil)
}
func backgroundPickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
// set image for button
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.headerImage.image = image
self.dismissViewControllerAnimated(false, completion: nil)
}
最佳答案
委托(delegate)函数 imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?)
也返回完成选择图像的 UIImagePickerController
。
因此您可以使用 if
语句来检查完成的选择器是 pickerOne 还是 pickerTwo。然后根据结果实现不同的行为。
也许在清理一些内存后将选择器设置为 nil
。
class multiPickerVC : UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var pickerOne : UIImagePickerController?
var pickerTwo : UIImagePickerController?
override func viewDidLoad() {
//
}
@IBAction func getBackground(sender: AnyObject) {
pickerTwo = UIImagePickerController()
pickerTwo!.delegate = self
pickerTwo!.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
pickerTwo!.allowsEditing = true
self.presentViewController(pickerTwo!, animated: true, completion: nil)
}
@IBAction func selectAvatar(sender: AnyObject) {
pickerOne = UIImagePickerController()
pickerOne!.delegate = self
pickerOne!.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
pickerOne!.allowsEditing = true
self.presentViewController(pickerOne!, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
if picker == pickerOne {
// set image for button
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.addAvatar.setImage(image, forState: .Normal)
} else if picker == pickerTwo {
// set image for button
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.headerImage.image = image
}
self.dismissViewControllerAnimated(true, completion: nil)
}
}
关于ios - 一个 Controller 中的多个图像选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622674/