1

私が取り組んでいるアプリには興味深い要件があります。私はそのUITableView中にたくさんのアイテムを持っています。どのアイテムが見られたかをログに記録しようとしています (過去にスクロール)。たとえば、リストに文字 AZ が含まれていて、ユーザーが文字 T までスクロールした場合、値 A、B、C、D、EF...T はinUITableViewとして格納されます。NSStringNSUserDefaults

実際の行テキストを NSString の値として保存したいと思います。たとえば、1 の代わりに A、2 の代わりに B など...

私はいくつかの掘り下げを行いましたが、有用なものを見つけることができません。これを達成する方法についてのアイデアはありますか?

4

3 に答える 3

2

関数

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

セルを表示するたびに呼び出されます。次に、メソッドを使用して indexPath.row をアルファベット文字に変換し、それを NSUserDefaults に格納できます。

編集 - あなたの質問を読み直すと、行の一般的なタイトルについて話しているだけの印象を受けます。これは簡単です - cellForRowAtIndexPath でタイトル テキストを設定する必要があるため、これを行うときにデフォルトにポップすることができます。

于 2013-09-16T09:32:33.680 に答える
1

plist ( NSDictionary) を作成し、1 - A 2 - B などのペア (キーと値) を作成します。保存したい場合は、値を検索してキーを検索するメソッドを記述します。

動的データがある場合:

を作りNSMutableDictionary、そして

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

の:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   [dict setObject:cell.label.text forKey:indexPath.row];

}

編集:

このメソッドを使用して、表示されている行を取得できます。

indexPathsForVisibleRows

それぞれが受信側で表示されている行を識別するインデックス パスの配列を返します。

- (NSArray *)indexPathsForVisibleRows

戻り値 NSIndexPath オブジェクトの配列で、それぞれが行インデックスとセクション インデックスを表し、テーブル ビューで表示される行を一緒に識別します。行が表示されていない場合は nil を返します。

于 2013-09-16T09:32:48.303 に答える
1

A、B、Cなどを含む配列からリストを作成していると思います。

あなたの配列は次のようになりますか: (A,B,C,D,E,F,G)

したがって、配列の各インデックスを NSMutableDictionary に変換して、配列が次のようになるようにすることから始めます。

(
{
value = "A"
visited = 0
},
{
value = "B"
visited = 0
},
{
value = "C"
visited = 0
},
{
value = "D"
visited = 0
},
)

cellForRowAtIndexPath で次のようにします。

NSMutableDictionary *editDict = [arrayObjects objectAtIndex:indexPath.row];
[editDict setInteger:1 forKey:@"visited"];
[arrayObjects replaceObjectAtIndex:indexPath.row withObject:editDict];

このようにして、訪問されたすべての行は、キー「訪問済み」に対して 1 になります。

次に、ループを実行して、訪問済み = 1 に対応する値を必要な場所に保存できます

于 2013-09-16T10:44:18.703 に答える