我有一个表格视图控制器,其中按字母顺序列出了所有美国州。单击某个状态会通过 Web 服务调用返回有关该状态的详细信息。这是我对分段或分组表视图的第一次尝试,我在使用超过“A”的行上的索引路径时遇到了问题。
例如,如果我单击“C”组中的第一项“California”,则 indexpath.row 属性为 0 而不是 4,因为 CA 是按字母顺序排列的第五个状态,它应该有一个 indexpath .row of 4。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//get the letter in the current section
NSString *letter = [stateIndex objectAtIndex:[indexPath section]];
//get all the states beginning with the letter
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", letter];
NSArray *states = [stateKeys filteredArrayUsingPredicate:predicate];
if([states count] > 0){
//get relevant state from states object
NSString *cellValue = [states objectAtIndex:indexPath.row];
[[cell textLabel] setText:cellValue];
}
return cell;
}
在我的后续中,在此方法的最后一行设置断点表明 itemRowIndex 不正确(当然,对于“A”组除外):
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"sgShowStateRivers"]){
RiversByStateTableViewController *riversVC = [segue destinationViewController];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSInteger itemRowIndex = indexPath.row;
NSString *key = [stateKeys objectAtIndex:itemRowIndex];
[riversVC setStateIdentifier:[statesDict objectForKey:key]];
}
}
怎么会有一个分组表视图,其中项目仍按原始数组中的编号进行编号?谢谢!五