2015-08-20 88 views
0

我是iOS編程的新手,並試圖在Swift tutorial開發「FoodTracker」。以下是我的所有代碼。UIImageVIew.image不會改變

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 

    } 
} 

該應用程序正常執行,但圖像無法更改。 正常的過程是點擊圖像>從相機膠捲中選擇任何圖像>更改待機屏幕的圖像。問題是最後一步,「改變閒置屏幕的圖像」。 哪一點是我的錯誤?我一次又一次地將我的代碼與示例代碼在教程中進行了比較,但我找不到有用的東西。請幫幫我。

回答

-1

你看了selectedImage變量嗎?它是否爲零?嘗試在設置selectedImage後設置斷點。

+0

哦,斷點?我沒有想到這一點。這可能是一個不錯的選擇,但爲時已晚。 :-(儘管如此,這對我來說是個好主意,我將在下一次使用這個技能,非常感謝你〜 –

0

兩件事: 首先聲明

let imagePicker = UIImagePickerController(); 

爲一個實例變量,然後在viewDidLoad中設置它的委託自我

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

這種方式是隻設置一次(而正在重置每個FUNC打電話)

第二我建議使用:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { 
photoImageView.image=image; 
} 

而不是(didFinishPickingMediaWithinfo ...),它可以完全按照您的需要拍攝圖像,而且您不需要投射。

下面是一個簡化的例子:

image picker example

希望它幫助

+0

感謝你的幫助,但在跟蹤你的回覆時,我的代碼變得非常混亂。 ,相機膠捲沒有拉起來,我找不出原因是什麼,我不知道該怎麼問,我想我應該從頭開始學習整個過程,如果我能夠改變圖像,我會就這個問題發表評論,無論如何感謝您的回覆。 –

0

Finnaly,我找出解決辦法。但這並不重要。 問題是語言版本。我使用XCode 6.4和Swift 1.2。 但是主頁使用了XCode 7.0 beta和Swift 2.0。 這是我的問題的原因。現在,一切正常。 謝謝你所有的迴應者。