1

以下のデータでプログラムされたテーブルビューがあります。また、ページにプログラムされた作業検索機能もあります。「スイッチ」システムを使用して、押されたセルに応じて特定のView Controllerに転送しようとしています。

- (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;
    }
}

}

現在、テーブルビュー セル内のオブジェクトに基づいてセグエを実行する方法に困惑しています。明らかに現時点では、セグエは検索可能なテーブルには役に立たない indexPath.row に依存しています。(セグエは現在、データがフィルタリングされている場合にのみ機能することを認識しています)。

どんなアドバイスでも大歓迎です!

乾杯

4

2 に答える 2

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];        
    }
}

あなたの方法で。そして、そこから欲しいものを何でも手に入れることができます。

于 2013-02-06T17:16:06.720 に答える
0

なぜ "One" 、 "Two" ... を identifier として使用するのだろうか、smtArrays オブジェクト名を identifier として使用しないのはなぜですか? 識別子が 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];

    }

}
于 2013-02-07T03:20:14.407 に答える