我有行视图表...在选择一个项目之后我想用新数据源显示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;
任何想法?
答案 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不是有效指针。我没有理由在这里崩溃。