0

UITableView があり、ボタンが押されたときに選択したすべての行のテキストを取得しようとしています。これが私がこれまでに持っているものです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    [selectedRows addObject:selectedCell.textLabel.text];
}

selectedRows は配列です。

チェックされた行のタイトルにアクセスする必要があるボタンを押す機能は次のとおりです。

- (IBAction)selectList:(id)sender {
    NSLog(@"%@", selectedRows);
}

ユーザーが行のチェックを外してから送信ボタンをクリックすると、配列に反映されないため、これは機能しません。これについて少し助けていただければ幸いです。ありがとう。

4

2 に答える 2

2

いつでも何が選択されているか、何が選択されていないかを把握する代わりに、リストを選択してそれを生成し、テーブルが選択内容を追跡できるようになるまで待ってみませんか。(大量のデータではない場合) テーブルの選択されたセルのインデックス パスをループして、探している文字列をデータソースから直接引き出すことができます。

- (IBAction)selectList:(id)sender
{
    NSMutableArray *arrayOfText = [NSMutableArray new];

    for (NSIndexPath *idx in self.tableView.indexPathsForSelectedRows) {
        [arrayOfText addObject:dataSource[idx.row]];
    }
    NSLog(@"%@",arrayOfText);
}
于 2013-08-15T03:04:27.933 に答える
0

didDeselectRowAtIndexPath 関数を追加して、配列から項目を削除できます。

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
[selectedRows removeObject:selectedCell.textLabel.text];
}
于 2013-08-15T03:03:51.337 に答える