如何在选择排序行时加载正确的笔尖?

时间:2011-07-27 13:27:25

标签: objective-c cocoa-touch uitableview

我按照这个答案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
    }
} 

对此有何想法?

2 个答案:

答案 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 reloadDatadidSelect的流量,您可以检查任何内容}仍然是一样的。

如果您仍有问题,请告诉我们。