-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
int nArrayCount;
nArrayCount=[self.mAppGameList count];
int row= (int)indexPath.row ;
if(row == nArrayCount)
{
if(mSearchGame_Thread != nil)
return;
NextSearchCell *searchCell =(NextSearchCell *)cell;
[searchCell.mActivityView startAnimating];
NSThread *searchThread = [[NSThread alloc] initWithTarget:self
selector:@selector(searchNextThreadProc:) object:tableView];
self.mSearchGame_Thread = searchThread;
[searchThread release];
[self.mSearchGame_Thread start];
// start new search ...
}
//线程方法
-(void)searchNextThreadProc:(id)param
{
UITableView *tableView=(id)param;
NSMutableArray *newArray;
newArray=[NSMutableArray arrayWithArray:self.mAppGameList];
NSArray *pressedlist;
nArrayCount=[self.mAppGameList count];
.
.
.
[newArray addObject:item];
self.mAppGameList = newArray;
[tableView reloadData];
self.mSearchGame_Thread=nil;
}
这种方式是个问题。
如果我在tableview重新加载数据时滚动表,那么for tableview就会消失并显示出来。
如果我在添加下一个单元格时触摸单元格,有时会出现内存不良的情况。 我想,它在重新加载新表之前调用tableView:didSelectRowAtIndexPath:方法。所以,表的数据不是。
所以,我想替换reload tableview方式。有什么办法吗?请帮帮我。
答案 0 :(得分:2)
您可以在UITableView中使用此方法通过动画添加新行,而不是使用reloadData:
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
这样,您的视图在重新加载时不会消失并重新出现。
请参阅此问题:UITableView add cell Animation
还要确保使用以下命令在主线程中执行UI的任何更新:
[self performSelectorOnMainThread:@selector(refreshMethodName) withObject:nil waitUntilDone:NO];
关于您的代码的一些评论: