2017-09-06 18 views
-3

私はクラスSecControlからクラスIBOutletにアクセスしようとしています。 しかし、それは次のエラー表示されます。だから、IBOutletにアクセスする方法

fatal error: unexpectedly found nil while unwrapping an Optional value

class A: UIViewController{ 
    @IBOutlet var datePicker: UIDatePicker! 
} 

を、ここで私は私がここで間違ってやっているものを教えてください他のクラスB

class B:UITableViewCell{ 

    var obj=A() 

    @IBAction func datePickerAction(_ sender: Any) { 
     obj.datePicker.isHidden=false 
    } 
} 

に日付ピッカーにアクセスしたいです。

+0

あなたのセルのデータピッカーがあなたのUITableViewCellクラスにコンセントを設定する必要がある場合 –

+0

しかし、それはセルにはありません、それはviewcontrollerとdatepicで接続する必要があるトップビューですボタンが特定のセルでクリックされるとkerが表示されます。 – user8350417

+0

didSelectRowAtindexPathデリゲートメソッドのデータピッカーを表示 –

答えて

0

この例では、AUIViewController)という新しいインスタンスを作成したことがわかりました。

var obj=A() 

このイニシャライザは、Interface Builderからインスタンスをロードしません。 ここで、AのIBOutletsnilです。つまり、datePickernilです。

ボタン上のアクションがあり、BdatePickerActionAが存在する場所と呼ばれているが、それはdatePricerロード(ここではすなわち。そのゼロ)、したがって、クラッシュを持っていません。細胞内のあなたがAにフィードを注入または言う必要があなたの問題を解決するために

(すなわちここではself

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    //... 
    cell.obj = self //Injection 
    //... 
} 

そしてBは、その後のタイプのobjAoptional

class B:UITableViewCell{ 

    var obj: A? 
    @IBAction func datePickerAction(_ sender: Any) { 
     obj?.datePicker.isHidden=false 

    } 
} 
を受け入れるように修正されるであろう
+0

cellForRowAtのobjにアクセスできません。 – user8350417

+0

あなたのtableView(_ tableView:UITableView、cellForRowAt indexPath:IndexPath)がどのように見えるかを示してください – BangOperator

関連する問題