0

ビューベースのアプリを作成し、その中に2つのテーブルビューコントローラーを追加しました。これがイベントのフローです。ビューコントローラーボタンが押された->テーブルビューコントローラーが読み込まれ、セルが選択されている場合->2番目のテーブルコントローラーが表示されます。

これが私のコードです。Viewcontroller.mで

-(IBAction)product:(id)sender
 {
Products *sec=[[Products alloc]init];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:sec];


[self presentModalViewController:nav animated:YES];    
}

products.mという名前の私の最初のTableviewコントローラーで

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.

 Description *detailViewController = [[Description alloc] initWithNibName:@"Description" bundle:nil];
 // ...
 // Pass the selected object to the new view controller.
 [self.navigationController pushViewController:detailViewController animated:YES];




 [detailViewController release];

}

descriptionという名前の2番目のTableViewコントローラー。問題は、2番目のTableViewコントローラーが表示されず、次のように問題が発生することです。

 *** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:],     /SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6061
 2012-08-03 15:10:51.016 jothi R&D[1112:f803] *** Terminating app due to uncaught  exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a  cell from tableView:cellForRowAtIndexPath:'
*** First throw call stack:
(0x13d3022 0x1564cd6 0x137ba48 0x9b42cb 0xb7d28 0xb83ce 0xa3cbd 0xb26f1 0x5bd21 0x13d4e42  0x1d8b679 0x1d95579 0x1d1a4f7 0x1d1c3f6 0x1d1bad0 0x13a799e 0x133e640 0x130a4c6 0x1309d84  0x1309c9b 0x12bc7d8 0x12bc88a 0x1d626 0x22a2 0x2215 0x1)
terminate called throwing an exception

しかし、products.mの説明を置き換えてViewcontrollerを表示しようとすると、機能します。

4

1 に答える 1

0

ここでの解決策は、2番目のTableviewコントローラーで、セルがnilの場合に条件を追加し、テーブルビュースタイルを表示する必要があることです。次のコードをに追加します。

cellForRowAtIndexpath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)  
{        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];



}

// Configure the cell...

return cell;
}
于 2012-08-03T12:42:16.047 に答える