2015-08-20 2 views
0

Я новичок в программировании на iOS и пытаюсь разработчик «FoodTracker» в Swift tutorial. Ниже приведен весь мой код.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

2 вещи: Первых объявить

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; 
} 

вместо (сделалFinishPickingMediaWithinfo ...), который сделал именно для выбора изображения, так же, как вам нужно, и вам не нужно кастинг.

Вот упрощенный пример:

image picker example

Надеется, что это помогло

+0

Благодарим за помощь, но, отслеживая ваш ответ, мой код запутался. , рулон камеры не подтягивается, я не могу понять, в чем причина. И я не знаю, что я должен спросить. Я думаю, что я должен следовать всему курсу с самого начала. Если я смогу изменить изображение , Я прокомментирую этот вопрос. В любом случае спасибо за ваш ответ. –

0

Finnaly, я выясняю решение. Но это немного тривиально. Проблема в языковой версии. Я использовал XCode 6.4 и Swift 1.2. Но домашняя страница использовала бета XCode 7.0 и Swift 2.0. Это причина моей проблемы. И теперь все работает нормально. Спасибо всем моим респондентам.

Смежные вопросы