如何在搜索栏中使用switch命令

时间:2013-02-06 16:15:38

标签: ios uitableview xcode4.5 uisearchbar

我有一个用下面的数据编程的表格视图。它还具有在页面上编程的工作搜索功能。我试图使用'switch'系统转移到特定的视图控制器,具体取决于按下的单元格。

- (void)viewDidLoad
{
[super viewDidLoad];

smtArray = [[NSArray alloc] initWithObjects:
                    [Smt SSSOfCategory:@"P" name:@"HW"],
                    [Smt SSSOfCategory:@"P" name:@"WI"],
                    [Smt SSSOfCategory:@"P" name:@"WC"],
                    [Smt SSSOfCategory:@"P" name:@"C"],nil];

//搜索功能的代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Smt *smt = nil;


if (tableView == self.searchDisplayController.searchResultsTableView) {
    smt = [filteredSmtsArry objectAtIndex:indexPath.row];


    switch (indexPath.row) {
        case 0:

            [self performSegueWithIdentifier:@"One" sender:self];
            break;

        case 1:
            [self performSegueWithIdentifier:@"Two" sender:self];
            break;

        default:
            break;
    }
}

}

目前,我对如何基于tableview单元格中的对象执行segue感到困惑。显然目前segue依赖于indexPath.row,这对于可搜索的表是无用的。 (我知道segue目前只在数据被过滤时才有效)。

任何建议都将不胜感激!

干杯

2 个答案:

答案 0 :(得分:1)

您可以使用

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
        NSString *content = selectedCell.textLabel.text;

        if ([content isEqualToString:"One"]) [self performSegueWithIdentifier:@"One" sender:self];
        else if ([content isEqualToString:"Two"]) [self performSegueWithIdentifier:@"Two" sender:self];        
    }
}

在你的方法中。然后你就可以得到你想要的任何东西。

答案 1 :(得分:0)

我想知道为什么你使用“One”,“Two”......作为标识符,为什么不使用你的smtArrays对象名作为标识符?如果您担心标识符是deplacate,则可以使用SSSOfCategory + name。而且您的代码将更完美,更具可读性

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    Smt *smt = nil;


    if (tableView == self.searchDisplayController.searchResultsTableView) {
        smt = [filteredSmtsArry objectAtIndex:indexPath.row];

        [self performSegueWithIdentifier:smt.name sender:self];

    }

}