2017-09-20 11 views
0

次のエラーが発生しました。アンラッピング中の例外オプション値

fatal error: unexpectedly found nil while unwrapping an Optional value 
2017-09-20 23:08:46.626918+0400 UnitConverter[6852:10110844] fatal error: unexpectedly found nil while unwrapping an Optional value 

コードと画像が添付されています。ビューがロードされたとき

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let webVC = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "webVC") as! ViewController 
     webVC.lblCategory.text = self.uc.categories[indexPath.row] 
    } 

enter image description here

+2

何もないはずのnilです。この場合、 'lblCategory'はSulthanが以下に述べるように、ビューがロードされていないので接続が設定されていないためです。 – Kevin

+1

@Kevin Nah、彼はビューがロードされる前に(彼が 'view'にアクセスしていないか、' loadViewIfNeeded'を呼び出すので)コンセントにアクセスしています。 – Sulthan

+0

@Sulthanああ、それはそれをするだろう。 – Kevin

答えて

0

アウトレットが接続されています。ビューは、最初にアクセスされるときにロードされます。

ビューを読み込まないうちにwebVC.lblCategorynilになり、アプリがクラッシュします。どちらかそれを修正view最初にアクセスするには:

_ = webVC.view 
webVC.lblCategory.text = ... 

または明示的

webVC.loadViewIfNeeded() 
webVC.lblCategory.text = ... 
+0

別の方法は、Stringプロパティを使用してその値を保持し、ロードが完了したときにラベルに設定することです。それは言及する価値があるかもしれない 'prepareForSegue()'で使われる一般的なテクニックです。 – Larme

+0

はまだ同じエラーです。またlblはwebVCに接続されています。 –

+0

@Larme私は 'prepareForSegue()'を使用していません。 –

0

をビューをロードするあなたは、あなたのビューコントローラ内の文字列プロパティを使用してテーブルビューdidselectから文字列プロパティを設定することができます。コントローラーを見ると、ラベルアウトレットに値を設定できます。

関連する問題