[英]UIImageVIew.image isn't be changed
我是iOS編程的新手,並嘗試在Swift教程中開發“ FoodTracker”。 以下是我的所有代碼。
import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
//MARK: Properties
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var mealNameLabel: UILabel!
@IBOutlet weak var photoImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
nameTextField.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: Actions
@IBAction func selectImageFromPhotoLibrary(sender: UITapGestureRecognizer) {
// Hide the keyboard.
nameTextField.resignFirstResponder()
//UIImagePickerController is a view controller that lets a user pick media from their photo library.
let imagePickerController = UIImagePickerController()
//Only allow photos to be picked, not taken.
imagePickerController.sourceType = .PhotoLibrary
//Make sure ViewController is notified when the user picks an image.
imagePickerController.delegate = self
presentViewController(imagePickerController, animated: true, completion: nil)
}
@IBAction func setDefaultLabelText(sender: UIButton) {
mealNameLabel.text = "Default Text"
}
//MARK: UIImagePickerControllerDelegate
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
//Dismiss the picker if the user canceled.
dismissViewControllerAnimated(true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithinfo info: [String : AnyObject]) {
//The info dictionary contains multiple representations of the image, and this uses the original.
let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
photoImageView.image = selectedImage
// Dismiss the picker.
dismissViewControllerAnimated(true, completion: nil)
}
//MARK: UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
//hide the keyboard.
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(textField: UITextField) {
mealNameLabel.text = textField.text
}
}
該應用正常執行,但無法更改圖像。 正常過程是單擊圖像>從“相機膠卷”中選擇任何圖像>更改待機屏幕的圖像。 問題是最后一步,“更改待機屏幕的圖像”。 我的錯誤是哪一點? 我一次又一次地將我的代碼與示例代碼進行了比較,但是找不到任何有用的東西。 請幫我。
2件事:首先聲明
let imagePicker = UIImagePickerController();
作為實例變量,然后在viewdidload中將其委托設置為self
override func viewDidLoad() {
super.viewDidLoad();
imagePicker.delegate=self;
}
這樣,它只設置一次(而不是為每個func調用重置)
其次,我建議使用:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
photoImageView.image=image;
}
而不是(didFinishPickingMediaWithinfo ...),它完全可以根據您的需要選擇圖像,而無需投射。
這是一個簡化的示例:
希望能有所幫助
最后,我想出了解決方案。 但這有點瑣碎。 問題是語言版本。 我使用了XCode 6.4和Swift 1.2。 但是首頁使用了XCode 7.0 beta和Swift 2.0。 這是我的問題的原因。 現在,一切正常。 謝謝你我所有的響應者。
您是否看過selectedImage變量? 沒有嗎? 設置selectedImage后,嘗試將斷點設置為行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.