У меня есть одно выпадающее изображение с одним текстовым полем, uipicker. Поэтому, когда пользователь нажимает текстовое поле - uipicker откроется, чтобы выбрать значение, и одна кнопка будет доступна для uipicker. Когда пользователь нажимает эту кнопку, выбранная пользователем кнопка будет добавлена в значение текстового поля.Неустранимая ошибка: неожиданно найден nil во время разворачивания Необязательное значение для uiimageview
Но я добавил один вид изображения в правом углу текстового поля. Когда пользователь нажимает текстовое поле и при открытии uipicker, uiimageview будет вращаться вверх и вниз. И когда пользователь нажимает кнопку «done», это изображение будет выглядеть нормально.
Но проблема в том, что моя действующая кнопка действия находится в отдельном классе nsobject. И мой вид iiimage в одном контроллере представления. Что я сделал?. Я просто вызываю представление uiimage диспетчера представлений в класс nsobject, и я делаю поворот изображения.
Но его сбой, когда я нажимаю кнопку завершения.
Вот мой код в вид контроллера:
lazy var ctDataPicker = CTDataPickerplayer()
@IBOutlet weak var sportsDropImage: UIImageView!
@IBOutlet weak var hobbiesDropImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
ctDataPicker.hobimage? = hobbiesDropImage as UIImageView!
ctDataPicker.spoimage? = sportsDropImage as UIImageView!
}
extension CricketFanViewController:UITextFieldDelegate{
func textFieldDidBeginEditing(textField: UITextField) {
selectedText = textField
if textField == Experience {
hobbiesDropImage.transform = CGAffineTransformMakeRotation(3.14)
sportsDropImage.transform = CGAffineTransformMakeRotation(0.0)
ctDataPicker = CTDataPickerplayer()
let indexPos = Hobbeies.indexOf(Experience.text!) ?? 0
ctDataPicker.showPicker(self, inputText: textField, data: Hobbeies,selectedValueIndex: indexPos)
}
else if textField == playedTeam{
hobbiesDropImage.transform = CGAffineTransformMakeRotation(0.0)
sportsDropImage.transform = CGAffineTransformMakeRotation(3.14)
ctDataPicker = CTDataPickerplayer()
let indexPos = Sports.indexOf(playedTeam.text!) ?? 0
ctDataPicker.showPicker(self, inputText: textField, data: Sports, selectedValueIndex: indexPos)
}
}
}
Мой NSObject код класса:
import Foundation
import SwiftCountryPicker
class CTDataPickerplayer: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
var dataPicker: UIPickerView!
var inputText:UITextField!
var parent:UIViewController!
var pickerData: [String]!
var feetStr = String()
var inchStr = String()
var hobimage:UIImageView!
var spoimage:UIImageView!
func showPicker(parent:UIViewController,inputText:UITextField, data: [String], selectedValueIndex: Int){
self.inputText = inputText
self.parent = parent
self.pickerData = data
if dataPicker == nil {
dataPicker = UIPickerView(frame: CGRectMake(0,0,parent.view.frame.size.width, 216))
dataPicker.backgroundColor = UIColor.whiteColor()
dataPicker.dataSource = self
dataPicker.delegate = self
dataPicker.selectRow(selectedValueIndex, inComponent: 0, animated: true)
_selectedValue = self.pickerData.count > 0 ? self.pickerData[selectedValueIndex] : ""
}
inputText.inputView = dataPicker
// ToolBar
let toolBar = UIToolbar()
toolBar.barStyle = .Default
toolBar.translucent = true
toolBar.tintColor = UIColor(hex: "B12420")
toolBar.backgroundColor = UIColor.whiteColor()
toolBar.sizeToFit()
// Adding Button ToolBar
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: #selector(CTDataPickerplayer.doneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: #selector(CTDataPickerplayer.cancelClick))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
inputText.inputAccessoryView = toolBar
}
func doneClick() {
hobimage.transform = CGAffineTransformMakeRotation(0.0)
spoimage.transform = CGAffineTransformMakeRotation(0.0)
}
Мое приложение аварии в кнопку Готово действия кода здесь:
hobimage.transform = CGAffineTransformMakeRotation(0.0) spoimage.transform = CGAffineTransformMakeRotation(0.0)
Где вы инициализировали 'hobimage'? – Santosh
Инициализировать ?? .. В классе nsobject или ?? – mack
Лучше опубликуйте свой полный код с отдельным именем класса, как вы определили. – Santosh