我按照这个答案How to sort alphabetically a UITableView Sectioned?排序UITableView。
问题是现在UITableView没有推出正确的ViewControllers,因为我的应用程序中有2个本地化,英语和意大利语。对于英语,它工作正常,但不是意大利语。
我正在使用的代码就是这个,正如本回答Pushing View Controllers in UITableViewController Grouped中所建议的那样:
if (indexPath.section == 0)
{
switch (indexPath.row) {
case 0:
[self.navigationController pushViewController:[[[FirstViewController alloc] initWithNibName:nil bundle:nil] autorelease] animated:YES];
break;
case 1:
[self.navigationController pushViewController:[[[SecondViewController alloc] initWithNibName:nil bundle:nil] autorelease] animated:YES];
break;
// and so on
}
}
对此有何想法?
答案 0 :(得分:0)
我可能错了,但我很确定你的英语和意大利语的排序会将单元格置于不同的顺序。所以你必须使用nibs引用相应地对另一个数组进行排序。我猜你的英文第一行与意大利语不一样,或者我错了?
答案 1 :(得分:0)
您的问题完全符合逻辑,无需更改代码。对tableView
数组进行排序时,didSelectRowAtIndexPath
在选择行时会弄乱,这是微不足道的。
这可能是因为你会实现像
这样的东西- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
if (indexPath.row ==0)
// PushViewController to view 1 //
if (indexPath.row ==1)
// PushViewController to view 2 //
}
if (indexPath.section ==1)
// Do something like before
如果是这种情况,那么是的,当您对tableView进行排序时,您将以糟糕的方式推送视图控制器。
我的建议是你可以在每一行中获取一些属性,并在推动视图控制器时检查它们。例如,如果你......(比方说)将第1行作为某个字母或数字或单词,你可以检查它和pushViewController。
但只有当你知道tableView
中的所有元素时才会这样做(不要介意排序)。
您可以查看类似......
的内容- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if (selectedCell.textLabel.text = @"1")
// push view controller to view 1
if (selectedCell.textLabel.text isEqualToString: self.lifeStyle)
// push view controller to lifeStyleViewController
// here lifeStyle is a NSString property //
如果您在cellForRowAtIndexPath
方法中进行逻辑设置和分配属性,并在逻辑上进行设置,以便在排序后执行tableView reloadData
时didSelect
的流量,您可以检查任何内容}仍然是一样的。
如果您仍有问题,请告诉我们。