2016-09-28 2 views
0

Я испробовал все предыдущие предложения здесь для устранения этой проблемы, но до сих пор не повезло. Он работал (UIPickerView был правильно заполнен), но теперь приложение вылетает после запуска viewDidLoad(). Убедитесь, что все IBOutlets подключены правильно. Попробовал пересоздать файл касания какао.Swift 3 viewDidLoad() - Неустранимая ошибка: неожиданно найдено нуль при развертывании необязательного значения

Вот мой код контроллера. Это должно быть нечто второстепенное, с которым я не обращаю внимания. Помогите!!

class SettingsVC: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 

@IBOutlet weak var targetCadenceLabel: UILabel? 
@IBOutlet weak var cadenceStepper: UIStepper? 
@IBOutlet weak var goalPicker: UIPickerView? 

var pickerDataSource = ["improve SPM", "maintain SPM"] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.goalPicker?.dataSource = self 
    self.goalPicker?.delegate = self 


    //MARK: Setup Tab Bar 
    let tabBarItem = self.tabBarItem 
    let incomingSelectedImage: UIImage! = UIImage(named: "settings_icon")?.withRenderingMode(.alwaysOriginal) 
    tabBarItem?.selectedImage = incomingSelectedImage 
    tabBarItem?.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor(red: 60/255, green: 159/255, blue: 255/255, alpha: 1.0)], for: UIControlState.selected) 
} 


//MARK: - Delegates and data sources 
//MARK: Data Sources 
func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerDataSource.count 
} 

//MARK: Delegates 
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { 
    let titleData = pickerDataSource[row] 
    let myFont = UIFont.systemFont(ofSize: 18) 
    let fontColor = UIColor(red: 60/255, green: 159/255, blue: 255/255, alpha: 1.0) 
    let myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName: myFont,NSForegroundColorAttributeName:fontColor]) 
    return myTitle 
} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

} 

@IBAction func cadenceStepper(_ sender: UIStepper) { 
    targetCadenceLabel?.text = Int(sender.value).description 
} 

@IBAction func goPremiumTapped(_ sender: UIButton) { 
    print("Go Premium Button Tapped") 
}  
} 
+0

Установить точку останова исключения и найти какую линию он разваливается на – Paulw11

+0

Пожалуйста, смотрите http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1, чтобы узнать, как отлаживать крушение. В сочетании с дублирующимся вопросом вы можете выяснить свою проблему. – rmaddy

+0

проверка ноль состояние первой, как это, а затем присвоить tabbaritem изображение ..... если пусть incomingSelectedImage = UIImage (назван: "settings_icon") ?. withRenderingMode (.alwaysOriginal) {? tabBarItem .selectedImage = incomingSelectedImage } –

ответ

0

Вы разворачивать только одна линия в вашей viewDidLoad и вот здесь:

let incomingSelectedImage: UIImage! = UIImage(named: "settings_icon")?.withRenderingMode(.alwaysOriginal) 

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

let incomingSelectedImage:UIImage? .......................... 
Смежные вопросы

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