2016-12-09 5 views
0

Много раз я хотел бы реализовать пользовательские UIViews, но у меня всегда была одна и та же проблема: мои IBOutlets равны нулю, когда я хочу их использовать.Как реализовать независимый пользовательский UIView с файлом nib в Swift?

Я попробовал все, что я мог видеть в Интернете, но ничего не работает ...

class ImagePickerView: UIView, ImagePickerDelegate { 

@IBOutlet weak var imageViewSelected: UIImageView! 


//MARK: - Initializers 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    let tapGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.onAddPicturePressed)) 
    tapGesture.minimumPressDuration = 0 
    self.addGestureRecognizer(tapGesture) 
} 

override func awakeFromNib() { 
    super.awakeFromNib() 
    //imageViewSelected = UIImageView() 
} 


//MARK: - ImagePickerDelegate 

func wrapperDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) {} 

func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) { 

    self.imageViewSelected.image = images[0] // (the limit is set to 1 image) 
    imagePicker.dismiss(animated: true, completion: nil) 
} 

func cancelButtonDidPress(_ imagePicker: ImagePickerController) { 
    imagePicker.dismiss(animated: true, completion: nil) 
} 


//MARK: - Events 

func onAddPicturePressed(gesture: UITapGestureRecognizer) { 
    if gesture.state == .began { 
     self.backgroundColor = CustomsColors.gray 
    } else if gesture.state == .ended { 
     self.backgroundColor = CustomsColors.lightGray 
    } 

    showImagePicker() 
} 


//MARK: - Utils 

func showImagePicker() { 
    let imagePickerController = ImagePickerController() 
    imagePickerController.delegate = self 
    imagePickerController.imageLimit = 1 
    Configuration.mainColor = CustomsColors.green 
    Configuration.cancelButtonTitle = "Annuler" 
    Configuration.doneButtonTitle = "OK" 
    Configuration.noImagesTitle = "Pas d'images disponibles" 

    self.parentViewController?.present(imagePickerController, animated: true, completion: nil) 
} 
} 

Я попытался self = Bundle.main.loadNibNamed("ImagePickerView", owner: self, options: nil)?.first as! ImagePickerView, но я не могу Asign самостоятельно.

Я хочу что-то очень простое, но я не знаю, как это сделать ...

+0

Сделать объект ImagePickerView в UIViewController класса, где вы хотите добавить это представление. Затем добавьте это как subview и установите кадры. – SNarula

ответ

0

Выполните следующие шаги, в которых просмотр контроллера вы хотите добавить острие:

  1. Make Object :

    var priceView: FV_ViewToShowPrice!

  2. Дают Рама:

    priceView = Bundle.main.loadNibNamed ("FV_ViewToShowPrice", владелец: самостоятельно, опции: ноль) [0], как! FV_ViewToShowPrice

    priceView.frame = self.view.bounds

  3. Добавить в виду:

    self.view.addSubview (priceView)

+0

Невозможно избежать, чтобы стимулировать ImagePickerView в коде и делать это автоматически с помощью раскадровки? (установка класса моего UIView на «ImagePickerView»)? – Will

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

  • Нет связанных вопросов^_^