2016-07-10 2 views
0

Я пытаюсь сделать загрузчик изображений в приложении ios.Выбор фотографии возвращается в пустой UI

EDIT 7

Этот вопрос теперь более четко спросил здесь: Present Modal for Image Select Erases UI

КОНЕЦ EDIT 7

Первое, что я пытаюсь сделать, это дать пользователю возможность выбрать изображение, которое они хотят загрузить.

EDIT 6

я упростил весь код, чтобы просто нажать одну кнопку. Модальная презентация удаляет пользовательский интерфейс предыдущей страницы. Как я это предотвращаю.

import UIKit 

class AddImageToStandViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 


    @IBAction func loadImageButtonTapped(sender: UIButton) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.allowsEditing = false 
     imagePicker.sourceType = .PhotoLibrary 

     self.presentViewController(imagePicker, animated: true, completion: nil) 

    } 
} 

Я обнаружил, что отбор работает просто отлично и не разрушает UI, если я нажму/SEGUE от другого к этому контроллеру.

КОНЕЦ EDIT 6

Ниже этого другие методы, которые я пробовал до этого

До сих пор этот код позволяет пользователю нажать кнопку и выбрать фотографию из их фото. Но после того, как они нажмут на фотографию, она просто вернет их в пустой вид, кроме навигационной панели внизу.

Кажется, мой пользователь возвращается, а не к виду, из которого они пришли, но к отдельному пустому виду. Как вернуть пользователя в представление, из которого они пришли?

import UIKit 

class CreateStandViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 


    @IBOutlet var image: UIImageView! 

    ... 


    @IBAction func selectPicture(sender: AnyObject) { 

     let ImagePicker = UIImagePickerController() 
     ImagePicker.delegate = self 
     ImagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 

     self.presentViewController(ImagePicker, animated: true, completion: nil) 

    } 



    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

     image.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
     self.dismissViewControllerAnimated(true, completion: nil) 

    } 

    ... 

Сообщите мне, если есть дополнительная информация, которую я должен дать.

EDIT 1

этот код имеет тот же эффект

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    image.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    picker.dismissViewControllerAnimated(true, completion: nil) 


} 

Я пытался добавить эту строку ниже, но я получаю ошибку о том, что CreateStandViewController.Type не могут быть преобразованы в ожидаемой UIViewController.

self.presentViewController(CreateStandViewController, animated: true, completion: nil) 

EDIT 2

Этот код ниже ошибки не суммируется и не но ничего не меняется

let createStandController = CreateStandViewController() 
    self.presentViewController(createStandController, animated: true, completion: nil) 

EDIT 3

Я буквально скопировал весь код здесь: http://www.codingexplorer.com/choosing-images-with-uiimagepickercontroller-in-swift/ и теперь имеют:

import UIKit 

class CreateStandViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    @IBOutlet var imageView: UIImageView! 

    let imagePicker = UIImagePickerController() 

    @IBAction func loadImageButtonTapped(sender: UIButton) { 

     imagePicker.allowsEditing = false 
     imagePicker.sourceType = .PhotoLibrary 

     presentViewController(imagePicker, animated: true, completion: nil) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imagePicker.delegate = self 
    } 

    // MARK: - UIImagePickerControllerDelegate Methods 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      imageView.contentMode = .ScaleAspectFit 
      imageView.image = pickedImage 
     } 

     dismissViewControllerAnimated(true, completion: nil) 
    } 

    func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 

} 

У этого вопроса есть такая же проблема, как раньше. Когда изображение выбрано, меня отправляют обратно в представление, белое с навигационной панелью внизу.

EDIT 4

Я запустить тот же код в своем собственном отдельном проекте в качестве автономного контроллера представления, и он работает. Есть код, который у меня есть на фоне моего приложения, которое убивает функциональность кода (возможно). Я предполагаю, что это может иметь какое-то отношение к navbar?

РЕДАКТИРОВАТЬ 5

я удалил панель вкладок в нижней части с помощью seguing к представлению изображения выбора посредством настоящего модально Segue, но не имел никакого эффекта.

ответ

0

Просто замените ваш

self.dismissViewControllerAnimated(true, completion: nil) 

с

picker.dismissViewControllerAnimated(true, completion: nil) 

Я думаю, вы получите точку после этого

+0

Добавление кода не изменил выход и я не знаю, что дополнительный код будет сделайте это. – Rorschach

+0

@ Rorschach позволяет обсудить это. Вы действительно хотите убрать диспетчер выбора контроллера контроллера, который из? с этим кодом 'rejectViewControllerAnimated (true, completion: noil)' – George

+0

Я ценю вашу помощь, но я честно не понимаю, что вы только что написали. – Rorschach

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