选中行后更改tableView的数据源

时间:2012-08-16 07:35:42

标签: iphone objective-c

我有行视图表...在选择一个项目之后我想用新数据源显示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];

但我在

中获得了exeption
[ListContent removeAllObjects];

init的实现:

- (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;

任何想法?

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

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

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

ListContent不是有效指针。我没有理由在这里崩溃。