0

以前ここでサポートしていたアプリでは、オンラインにあるXMLを解析し、初日にXMLから1つのアイテムのみを表示し、アプリが開いた後は毎日アイテムを追加します。各セルの詳細ビューに「既読にする」アクションを追加できるようにしたいと思います。このようにして、ユーザーはそれを読み取り、読み取り済みとしてマークすることができ、その後のロード時に、ロードされた各アイテムの横にチェックマークが表示されます。

アプリは毎回XMLをダウンロードするので、これを行うのに最適だと私が考えたアイデアは次のとおりです。NSUserDefaultキーに配列を格納することを考えていました。この配列には、選択した行に基づいて番号が追加されます。行1を選択してマークを付けた場合、配列はそれに#1を追加します。次に、行3を選択してマークを付けると、配列には1と3が含まれます。

これは実行可能なことであり、cellForRowAtIndexPathで、配列に含まれる各行にチェックマークを追加しますか?

私は頭の中で考えを持っています、そしてこれがうまくいくなら、それを実装するための少しのガイダンスが必要です。ありがとう

更新
これが私が今のところ持っているものです。applicationDidFinishLaunchingWithOptionsで、NSUserDefaultキー'checkedrows'が存在するかどうかを確認します。そうでない場合は、空の配列のオブジェクトを使用して作成します。

if (![defaults objectForKey:@"checkedrows"]) {
        [defaults setObject:@[] forKey:@"checkedrows"];
    }

私が持っている2つの主な質問は、cellForRowAtIndexPathで配列内の数値を取得する方法と、それらに一致する行がある場合はそれにチェックマークを追加する方法です。例:テーブルビューには5つの行があり、配列は0、2、4を返します。したがって、TableViewで最初の3番目と5番目のセルにチェックマークを追加します。

もう1つの主な質問は、古い数値を削除せずに、配列に数値を追加する方法です。

4

1 に答える 1

1

絶対!

このメソッドを使用して、オブジェクトをにsetObject:forKey:書き込み、その配列を取得できます。NSArrayNSUserDefaultsobjectForKey:

今、単に聞いてください

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

で、UITableViewDelegateにすでに存在する配列を取得し、NSUserDefaultsタップしたばかりのインデックスを配列に追加し(オブジェクトからこの情報を取得しindexPathます)、配列をNSUserDefaults!に書き戻します。

選択したセルにチェックマークを追加するには、tableView:didSelectRowAtIndexPath:上記のデリゲートメソッド内で次のコマンドを使用します。

[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
于 2012-12-18T15:22:10.260 に答える