Много раз я хотел бы реализовать пользовательские 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 самостоятельно.
Я хочу что-то очень простое, но я не знаю, как это сделать ...
Сделать объект ImagePickerView в UIViewController класса, где вы хотите добавить это представление. Затем добавьте это как subview и установите кадры. – SNarula