gpt4 book ai didi

ios - 分段 TableView 索引路径问题

转载 作者:行者123 更新时间:2023-11-29 13:06:59 27 4
gpt4 key购买 nike

我有一个 TableView Controller ,其中按字母顺序列出了美国所有州。单击某个状态会通过 Web 服务调用返回有关该状态的详细信息。这是我第一次尝试分段或分组 TableView ,我在处理“A”之后的行的索引路径时遇到了问题。

例如,如果我单击“C”组中的第一项“加利福尼亚”,则 indexpath.row 属性为 0 而不是 4,因为 CA 是按字母顺序排列的第五个州,它应该indexpath.row 为 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]];
}
}

如何拥有一个分组 TableView ,其中的项目仍然按照它们在原始数组中的编号进行编号?谢谢! V

最佳答案

您对 UITableView 上下文中的 NSIndexPath 的理解不正确。对于表中的每个单独部分, 属性重置为 0。

您有两个简单的选择可以继续前进:

  • 您可以做的是创建一个二维数组(“数组的数组”),其中第一级用于每个部分,第二级用于一个部分中的每一行。这使您可以直接使用索引路径的 rowsection 进行数组查找。

  • prepareForSegue:sender: 中,您可以遍历各个部分并计算行数,直到到达 indexPathForSelectedRow.section,然后添加 indexPathForSelectedRow .row 到那个数。这将为您提供一个索引,您可以使用该索引从一维数组中获取状态信息。

关于ios - 分段 TableView 索引路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com