2016-03-31 24 views
0

görünümü nasıl çalıştığını hala öğreniyorum, ama sınıfın alt sınıfı olan sınıfını GraficsBalancGlobalViewController var ... Ben çözemedikleri bir sorun buldum GraficViewControllerprogramın çökmesi yapar

class GraficsBalancGlobalViewController: GraficViewController { 
    @IBAction func afegeixGrafic(sender: NSButton) { 
    addNewGrafic() // which is set on the GraficViewController 
    } 
} 

Ve on line IBAction afegeixGrafic programım çöküyor gerçekleştirirken aşağıda işaretlenmiş:

012:

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 
} 

derleyici söylüyor

ama GraficViewController iç düğmesi (IBAction) iyi çalışıyor !! Yani

  • sadece bunu ve eserlerini deneyin çünkü GraficView(frame: frame) sorun olmadığını belirtmeyi .. ben sorun scrollview ile ilgili olduğunu varsayalım, ama .. O başlatılır edilebilir ne hiçbir fikrim yok iyi. Ben ! inanıyorum
+0

Eğer 'scrollView' için' IBOutlet' kontrol mü? – Caleb

+0

Bu satırda bir kesme noktası ekleyin ve hata ayıklayıcı konsoluna "p scrollView" yazın. ScrollView nil mi? – Darko

+0

@Drako Evet! Sen doğru scrollView sıfır, ama var, ekranda var! –

cevap

0

senin sıkıntılardan suçlu:

@IBOutlet weak var scrollView: NSView! 

Xcode IBOutlet s için kuvvet paketini (!) ile bu girişi oluşturmak yapar, ama gerçekten isteğe bağlı (?) çünkü olmalıdır Bu referans ayarlandığında garantiniz yoktur. Eğer scrollView 'ın varlığına bağlıdır bazı mantığı varsa, didSet güvenerek bunu yapabilirsiniz:

@IBOutlet weak var scrollView: NSView? { 
    didSet { 
     guard let sview = scrollView else { 
      return // because scrollView is nil for some reason 
     } 
     // do your scrollView existence dependent logic here (eg. reload content) 
    } 
} 

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) 
} 

umarım bu yardımcı olur.

+0

Aslında hiçbir varoluşa sahip Gerçekten neden bilmiyorum !, scrollview button' '@IBAction fonk durumunda sıfır olmadığını tespit ettik bağımlı mantık henüz. Değişiklikleri kullanarak, herhangi bir şey yazmadan // buradaki scrollView varlığına bağlı mantığı (örneğin içeriği yeniden yükle) 'yi tıklattığımda @IBAction' afegeixGrafic 'görünümünde hiçbir şey yok. Ne istediğini belki bu konuda çok yanılıyorum, kaydırma görünümünde içinde yeni bir görünüm apear olduğunu .. –

+0

ilk kullanırken Scrollview sıfır olması mümkündür olabilir Nasıl: '@IBAction kullanırken' @IBAction afegeixGrafic' ama func düğmesi 'değil'? –

+0

Bu çıkışların/eylemlerin belirli/güvenilir bir sırada ayarlandığını gösteren bir garanti yoktur. Program artık kaza değil, çünkü yardımcı olur, ancak görünümü .. apear gelmez Ve scrollview i 'kullanmak (nil) boş olduğu için yani (son düzenleme ile birlikte) – skim