0

次のコードを使用して、プログラムでViewControllerからTableView Controllerに移行しようとしています(ストーリーボードセグエを使用する場合とは異なります)。

[self.navigationController pushViewController:photosTVC animated:YES];

ただし、テーブルビューコントローラの読み込み中に「アサーションエラー」が発生します。具体的には、このメソッドの2行目:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Photo";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
...

テーブルビューコントローラーは、セグエを使用して移行する場合は正常に読み込まれますが、この方法で移行する場合は正しく読み込まれません。私が試すことができるどんなアイデアでも大歓迎です!

読んでくれてありがとう。

編集:完全なエラーテキストは以下のとおりです。

-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]、/ SourceCache / UIKit_Sim / UIKit-2372 / UITableView.m:4460でのアサーションの失敗

4

1 に答える 1

1

[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];セルを使用するには、registerNib:forCellReuseIdentifier:またはregisterClass:forCellReuseIdentifier:を使用して登録する必要があります。これは、ストーリーボードを使用している場合に自動的に行われます。

[tableView dequeueReusableCellWithIdentifier:CellIdentifier]したがって、特定の理由がない限り、プログラムで実行する場合は、このメソッドのみを使用してください。

編集:

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    // or whatever cell initialisation method you have / created
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
于 2012-12-03T01:30:28.273 に答える