テーブルビューにデータを表示し、選択した行に基づいて次のビューに切り替える多層xmlparserを構築しようとしています(おそらく同じビューコントローラーに)。
ストーリーボード セグエから始めましたが、動的セルを使用しているため、複数のプッシュ セグエを作成する方法がわかりません (さまざまなビュー コントローラーにプッシュする必要があるため)。そのため、ストーリーボード ビューを保持し、すべてのセグエを削除して、代わりに以下のコードを使用しました。
ただし、新しいビューが行を作成しようとすると、この例外がスローされます。
キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"index: %i", indexPath.row);
switch (indexPath.row) {
case 0:
{
DetailViewController *detailViewController = [DetailViewController alloc];
[self.navigationController pushViewController:detailViewController animated:YES];
break;
}
//...
default:
{
LayerViewController *layerViewController= [LayerViewController alloc];
[layerViewController setStartUpWithIndex:indexPath.row andLayer:layercount];
[self.navigationController pushViewController:layerViewController animated:YES];
break;
}
}
}
setStartUpWithIndex:andLayer: は私の初期化メソッドです...
次のセグエ コードを使用してストーリーボード セグエ経由でプッシュすると、問題は発生しません。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
[[segue destinationViewController] setStartUpWithIndex:indexPath.row andLayer:layercount];
}
ビューの最初のレイヤーで cellForRowAtIndexPath: として正常に動作するように didSelectRowAtIndexPath に含める必要がある「セグエ」メソッドの何かが欠けていると思います。
リクエストされた編集:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"LayerCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = [[articles objectAtIndex:indexPath.row]objectForKey:@"HerstellerName"];
// cell.textLabel.text = @"ololol";
return cell;
}
記事の配列はところで働いています