UIImageVIew.image不会被更改

时间:2015-08-20 17:33:21

标签: ios image swift uiimageview

我是iOS编程的新手,并试图开发" FoodTracker"在Swift tutorial。以下是我的所有代码。

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

    }
}

应用程序正常执行但图像无法更改。 正常的过程是点击图片>从相机胶卷中选择任何图像>改变空闲屏幕的图像。问题是最后一步,"改变空闲屏幕的图像。" 哪一点是我的错?我一次又一次地将我的代码与教程中的示例代码进行了比较,但我找不到有用的东西。请帮帮我。

3 个答案:

答案 0 :(得分:0)

2件事: 首先声明

from Tkinter import *
def start():
    #something
    save_place = save_location.get()
    website_url = url.get()
    print save_place,website_url
app = Tk()
top_app = Frame(app)
top_app.pack()
save_location = Entry(top_app, width=20)
url = Entry(top_app, width=20)
save_location.grid(sticky=W, row=0)
url.grid(sticky=W, row=1)
button_start = Button(top_app, text="Start", fg="green", command=start)
button_start.grid(sticky=W, row=2, pady=20)
app.mainloop()

作为实例变量,然后在viewdidload

中将其委托给self
let imagePicker = UIImagePickerController();

这样它只设置一次(而不是为每个func调用重置)

其次我建议使用:

override func viewDidLoad() {
    super.viewDidLoad();
    imagePicker.delegate=self;
}

而不是(didFinishPickingMediaWithinfo ...),它完全取决于拾取图像,就像你需要的那样,你不需要施法。

这是一个简化的例子:

image picker example

希望有所帮助

答案 1 :(得分:0)

Finnaly,我找到了解决方案。但这并不重要。 问题是语言版本。我使用了XCode 6.4和Swift 1.2。 但主页使用了XCode 7.0 beta和Swift 2.0。 这就是我的问题的原因。现在,一切正常。 感谢所有响应者。

答案 2 :(得分:-1)

你看过selectedImage变量吗?它没有?设置selectedImage后尝试将断点设置为行。