簡體   English   中英

UIImageVIew.image不會被更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM