最近久々にiOSのアプリを改修してり新規に作ったりしてます。
そこでタイトルの通りハマったのでメモ書き程度に。。。
UITableViewをいろいろ事情があって、UITableViewControllerから継承せず
UIViewControllerベースでそこに載せる形で実装してました。
で、各セルを設定する「cellForRowAtIndexPath」で、以下のように記載していました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = @"hogehoge"; return cell; } |
まぁよくあるパターンだと思います。
このまま適当な数のセルを出力しようと実行すると以下のエラーが発生します。
unable to dequeue a cell with identifier Cell – must register a nib or a class for the identifier or connect a prototype cell in a storyboard
見たことないエラーだったので、調べてみるとdequeしてるとこがまずいっぽいと。
なので、以下のように修正
1 2 3 4 5 |
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; ↓ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
今回、Storyboardを使用しない開発をしているので、おそらくそれが原因と考えられます。
あと使ったことないけど、forIndexPathを指定するのはStaticCell使うためのものなのかもと思ったり。。。
iOS5の頃が一番アプリ開発をしてたような気がするので、いろいろ勉強が必要と痛感しています(^_^;)
以上です。