如何通过indexPathsForVisibleRows读取NSIndexpaths数组的intValue?
顺便说一句,为什么在if(cell == nil)函数之前,visibleCells和indexPathsForVisibleRows不起作用?
这是我的代码:
在cellForRowAtIndexPath方法中:
static NSString *identifierString;
UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:identifierString];
// when I use visibleCells and indexPathsForVisibleRows here, the app crashes
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifierString] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
}
// when I use visibleCells and indexPathsForVisibleRows here, the app works
//cell implementation here
return cell;
答案 0 :(得分:4)
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
是tableview用单元格填充的地方。如果您尝试在创建它们之前引用可见单元格,这在if语句中完成,则应用程序崩溃。
alloc
命令为要创建的单元分配内存,然后使用某些参数初始化它。您在numberOfRowsInSection
中指定的方法会多次调用此方法。
因此,您不会一次又一次地重新创建所有单元格,if语句会检查单元格是否存在,并且仅当它是nil时才会创建一个新单元来取代该位置。
要获取IndexPath的int
行值,可以使用它的row属性。例如:
NSArray indexArray = [self.tableView indexPathsForVisibleRows];
int i=0;
while(i!=indexArray.count){
//Log out the int value for the row
NSLog(@"%d", indexArray[i].row);
i++;
}
希望这有帮助