nib but the view outlet was not set. の解決方法

Master-Detail アプリケーションで、Detail にさらに tableView を配置し customCell を設定しようとするとエラー発生。

tableView のデリゲートは設定済。必須のメソッドも実装済。これね、すごい根深い問題がありますね。ViewController のファイル名と、xib のファイル名を区別しないとうまくいかないと。詳しくは以下を参照:

これね、わかんないよ普通。

 

うまいやり方は、次の通り。

  • detail 内の tableViewController はわざわざ新設せず、UITableViewController のインスタンスとして生成すれば delegate method を使う都合もあり、便利
  • 必須の method は 以下の 2 つ。
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

結局、table cell はうまく設定していたのに、その後 tableViewController を新設しようとして名前問題が発生してしまった、ということになります。