0

2 つのセクションを含む動的テーブル ビューがあり、それぞれに 4 つの行があり、それぞれに配列が設定されています。

1 つのセルのみをチェックする必要がありますが、現時点では何もチェックされていません。

チェックしたいセルのテキストを知っています。

私の質問は、セルに含まれるテキストに基づいて、セルのaccessoryTypeを設定できますか?

IF cell.textLabel.text equals THIS と同様に、そのセルの accessoriesType チェックを設定します。

どんな助けでも素晴らしいでしょう。

編集 編集 編集 編集

以下のコメントを考慮した、これまでのコードは次のとおりです。

  switch (indexPath.section) {
        case standardSection:
            serverLoc.textLabel.text = [self.serverSelection objectAtIndex:indexPath.row];
            if ([[self.serverSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
                serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
            }
            break;
        case qualitySection:
            serverLoc.textLabel.text = [self.qServerSelection objectAtIndex:indexPath.row];
            if ([[self.qServerSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
                serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
            }
            break;
        default:
            break;
    }

セクションは、次のように設定されています。

セクション 1:

イリノイ州シカゴ 英国ロンドン カリフォルニア州サンノゼ ワシントンDC

第2節:

イリノイ州シカゴ (Q) 英国ロンドン (Q) カリフォルニア州サンノゼ (Q) ワシントン DC (Q)

ご覧のとおり、CellValue の値をチェックしています。CellValue は、前のビューのデリゲートを使用して設定されます。

この時間がイギリスのロンドンに等しいとしましょう。このビューに入ると、London, UK と London, UK (Q) の両方がチェックされています。(Q) がチェックされていないものだけが必要です。「isEqualToString」を使用しても、これが発生しました。cellValue が英国のロンドン (Q) に等しい場合、これは機能します。

4

2 に答える 2

2

でこれを行いcellForRowAtIndexPathます。セルを作成したら、配列の値をチェックします (配列に NSStrings が含まれていると仮定します)。そう:

if ([[self.myArray objectAtIndex:indexPath.row] isEqualToString:@"the string I want"]) {
     cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

編集:コメントに基づいて、すべての文字列は同じもので始まりますが、違いがある場合があります。次のようなことができます。

if ([[self.myArray objectAtIndex:indexPath.row] rangeOfString:@"London,"].location != NSNotFound) {
     cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

これは、NSString に "London" が含まれている場合、YES と評価されます。つまり、NSString には「ロンドン」が含まれています。

于 2013-02-01T01:07:29.853 に答える
0

セルを作成するときに、その値を設定するようにしてください (セルのラベルを見るのではなく、「モデル」から)。

何らかの状況で値が変化する場合は、モデル (各セルの作成時に使用するデータ) を更新する必要があります。を呼び出します[self.tableview reloadData]

于 2013-02-01T00:59:06.937 に答える