Просто обновлено до Swift 3 и Xcode 8 Beta 4.Swift 3 - SIGABRT ошибка - numberOfComponentsInPickerView]: непризнанный селектор направил к экземпляру
После исправления всех проблем коды теперь у меня есть свободный проект об ошибке, но он бросает ошибка SIGABRT при нажатии одной конкретной кнопки на моем переднем экране.
Я уверен, что это как-то связано с элементом UIPickerView на целевой странице, так как я удалил, проверил и добавил все сегменты и выходы, чтобы убедиться, что с этой стороны все ясно.
Консоль показывает следующее:
2016-08-02 18: 59: 46.607 ForceIt [38735: 2895259] - [ForceIt_.DirectoryViewController numberOfComponentsInPickerView:]: непризнанные селектор направлен например 0x7fcd68c0c210 2016-08-02 18: 59: 46,618 ForceIt [38735: 2895259] *** Нагрузочного приложения из-за неперехваченного исключением 'NSInvalidArgumentException', причины: «- [ForceIt_.DirectoryViewController numberOfComponentsInPickerView]: непризнанного селектор отправлен пример 0x7fcd68c0c210 '
код из соответствующего ViewController выглядит следующим образом:
import UIKit
var forceSelectedForTabView = String()
var forceSelectedPositionInArray = Int()
class DirectoryViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var forcePicker: UIPickerView!
@IBOutlet weak var selectedContactLabel: UILabel!
@IBOutlet weak var selectedPhoneTextView: UILabel!
@IBOutlet weak var selectedWebsiteTextView: UILabel!
//function for the number of columns in the picker
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
//function counting the array to give the number of rows in the picker
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return forcePickerData.count
}
//function displaying the array rows in the picker as a string
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return forcePickerData[row]
}
//function allowing the font and colour of the picker to be changed
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let titleData = forcePickerData[row]
let myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Verdana", size: 25.0)!,NSForegroundColorAttributeName:UIColor.black])
return myTitle
}
//function returning the selected row from the picker
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
forceSelectedForTabView = String(forcePickerData[row])
forceSelectedPositionInArray = forcePickerData.index(of: forcePickerData[row])!
self.selectedContactLabel.text = issiData[Int(forcePickerData.index(of: forcePickerData[row])!)]
self.selectedPhoneTextView.text = phoneData[Int(forcePickerData.index(of: forcePickerData[row])!)]
self.selectedWebsiteTextView.text = websiteData[Int(forcePickerData.index(of: forcePickerData[row])!)]
}
}
Где вы устанавливаете 'forcePickerData' равным чему-то? Похоже, проблема заключается в методе 'numberOfRowsInComponent' – Asdrubal
Возвращает счетчик массива, который предоставляет данные для сборщика. Массив расположен чуть ниже конца общего кода. Он отлично работает под Xcode 7, однако он доказывает кошмар под Xcode 8 ... –
В 'numberOfRowsInComponent' вызов' print (forcePickerData.count) 'является правильным результатом? – Asdrubal