0

我有带有行的表格视图......在我选择一个项目后,我想用新的数据源显示 tableView。

我试图实现:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

[self.searchDisplayController setActive:YES animated:YES];
    Game *game = [self.filteredListContent objectAtIndex:indexPath.row];
    //name your class names with capitals
    NSMutableArray *arrayToBeAdded= [[NSMutableArray alloc]initWithArray:newgamearray];
    [ListContent removeAllObjects];
    [ListContent addObject:arrayToBeAdded];

但我得到了例外

[ListContent removeAllObjects];

初始化的实现:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellID = @"cellSgames";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellID];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellID] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    Gmage *game = [self.ListContent objectAtIndex:indexPath.row];

在 .h 文件中我声明:

NSArray AllList;
NSMutableArray ListContent;

有任何想法吗?

4

2 回答 2

3

无需操作当前列表,而是使用所需的数据源创建新的 UITableViewController。如果您使用 UINavigationController,它将创建更好的用户体验,并且您将避免当前的问题。

例子:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    InnerTableViewController *innerTVC = [[InnerTableViewController alloc] initWithNibName:@"InnerTableViewController" bundle:nil];

    [self.navigationController pushViewController:innerTVC animated:YES];
    [innerTVC release];
}
于 2012-08-16T07:39:22.250 回答
0

通常,如果您在 didselect 方法中重置数组并使用新内容重新加载表格视图,它应该可以工作。

在您的情况下,我认为在线: [ListContent removeAllObjects];

ListContent 不是有效的指针。我看不出有什么理由让它在这里崩溃。

于 2012-08-16T09:20:31.533 回答