Как возможно, что scrollview равен нулю при использовании первого: @IBAction afegeixGrafic
, но при использовании @IBAction func button
это не '? я получил класс GraficsBalancGlobalViewController
, который является подклассом класса GraficViewController
Почему мой scrollView равен нулю?
class GraficsBalancGlobalViewController: GraficViewController {
@IBAction func afegeixGrafic(sender: NSButton) {
addNewGrafic() // which is set on the GraficViewController
}
}
И когда я выполнить IBAction
afegeixGrafic
моя программа аварии на линии, отмеченной ниже:
class GraficViewController: NSViewController, GraficViewDataSource {
@IBAction func button(sender: NSButton) {
addNewGrafic()
}
func addNewGrafic() {
let frame = NSRect(x: 0, y: 0, width: self.view.bounds.width , height: self.view.bounds.width * 0.25)
let nouGrafic = GraficView(frame: frame)
scrollView.addSubview(nouGrafic) <---- BREAK here!
}
@IBOutlet weak var scrollView: NSView!
//...more code
}
Компилятор говорит, что:
fatal error: unexpectedly found nil while unwrapping an Optional value
но кнопка (IBAction) внутри GraficViewController
работает хорошо л !! Поэтому я полагаю, что проблема связана с Scrollview, но я понятия не имею, что может быть .. Он инициализируется ..
Я стараюсь это тоже:
@IBOutlet weak var scrollView: NSView? {
didSet {
guard let sview = scrollView else {
addNewGrafic()
return // because scrollView is nil for some reason, but don't work
}
}
}
Полный код:
class GraficsBalancGlobalViewController: GraficViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
@IBAction func afegeixGrafic(sender: NSButton) {
//performSegueWithIdentifier("Nou Grafic", sender: nil)
//let viewController = storyboard!.instantiateControllerWithIdentifier(identifier!) as! GraficsBalancGlobalViewController
addNewGrafic()
}
@IBAction func eliminaGrafic(sender: NSButton) {
}
}
'scrollView' всегда будет ноль в последнем блоке кода - это то, что охранник проверка - и она падает в еще только когда это nil –
да, извините, что может ввести в заблуждение. Не заботьтесь о последней части кода, важно первое. –
Покажите нам стек вызовов в точке ошибки. –