2016-10-20 12 views
1


そして、私は委任されたパターンを実行しています。私は、デリゲートがメッセージをに送信する簡単なアプリケーションを作成しました。UIActivityIndi​​catorViewを表示すると、UIViewControllerが表示されます。残念ながら、私は次のエラーが発生します:error atal:オプションの値をアンラップしている間に予期せずnilが見つかりました。 UIActivityIndi​​catorViewは初期化されていないようです。私はどこが間違っているのか理解できません。代理人とUIActivityIndi​​catorViewエラー

protocol ProgressBarDelegate { 
     func UpdateProgressBar(progress: Bool) 
    } 


    class Dao: NSObject { 

     var delegate: ProgressBarDelegate? 
     override init() { 
      super.init() 
      //DELEGATO 
      //I who should I send the message? to FirstViewController 
      let messaggero = FirstViewController() 
      self.delegate = messaggero 
      scriviUnMessaggio(progress: true) 
     } 
func scriviUnMessaggio(progress: Bool){ 
     print("I'm writing a message ...") 
     delegate?.UpdateProgressBar(progress:progress)  
    } 

私のコントローラ

class FirstViewController: UIViewController,ProgressBarDelegate { 

    @IBOutlet var activity: UIActivityIndicatorView! 

    func UpdateProgressBar(progress: Bool){ 

     print("I received the message from Dao class (the delegate)") 

     switch progress{ 
     case true: 
     // At this point I get the following error:Fatal error: unexpectedly found nil while unwrapping an Optional value 


      self.activity.startAnimating() 
     case false: 
      self.activity.stopAnimating() 
     default: 
      self.activity.startAnimating() 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let dao = Dao() 

     /// dao.caricamentoDati() 
+0

はあなたが接続していません行う

class Dao: NSObject { var delegate: ProgressBarDelegate? init(delegate: ProgressBarDelegate) { super.init() //DELEGATO //I who should I send the message? to FirstViewController self.delegate = delegate scriviUnMessaggio(progress: true) } func scriviUnMessaggio(progress: Bool){ print("I'm writing a message ...") delegate?.UpdateProgressBar(progress:progress) } 

に従うとして、それがviewDidLoad

変更にselfにデリゲートを設定しself.activity.startAnimating()

であなたのDoaからのinitメソッドをクラッシュを与えている理由ですアクティビティビューアウトレット? – rmaddy

+0

(はい)コンポーネントが正しく私のストーリーボードに接続されています – Diego

+0

そうでなければ、エラーは発生しません。 'self.activity.startAnimating()'行にブレークポイントを置き、 'self.activity'が' nil'であることがわかります。 – rmaddy

答えて

1

問題は、あなたがDaoのINITにFirstViewControllerの新しいオブジェクトを作成しているということです。 FirstViewControllerオブジェクトはxib/storyboard経由で作成されていないため、コンセントは接続されていません。それはその後のviewDidLoadでこの

override func viewDidLoad() { 
    super.viewDidLoad() 
    let dao = Dao(delegate: self) 
} 
+0

あなたの答えをありがとう、残念ながら私は同じエラーが発生します:( – Diego

+0

@Diego Let meあなたの編集した答えがあなたのために働くかどうかを知る –

+0

申し訳ありませんあなたのメッセージを今読んだことがありませんでした – Diego

関連する問題