2011-07-01 6 views
0

iPhoneアプリケーションをビルドしています。ここでは、オン/オフをチェックできるアイテムを持つテーブルビューがあります。ユーザーが選択したアイテムをチェックすると、その情報をサーバーに送り返す必要があります。しかし、私はこれを行う最適な方法を知らない。情報を配列にロードする必要がありますか?多分辞書ですか?コードでこれを行う方法の具体例を挙げることができますか?チェックされたテーブルの表示アイテムに関する情報をサーバーに送信

ありがとうございました。

誰もいませんか?

更新

明確にするために、URLの接続に関するすべてが世話をしています。私が必要とするのは、配列の情報を並べ替える方法です。ここでは、項目のインデックスパスを使用して、チェックされたテーブルビューセルを表します。その後、情報をJSONに変換して、サーバー上で解析します。私はJSONのエンコード/デコードライブラリを持っているので、それを行う方法に関する情報は必要ありません。

+0

転送されるアイテムの数はいくつですか?アイテムごとにintを送信するのか、アイテムごとにフィールドのセット全体を送信するのですか?どのようなサーバーですか?サーバー側でJSON、XML、その他が必要ですか?デバイス上でどのようなデータ構造が使用されているかは関係ありません。 「最適な」方法を見つける前に、NSURLConnectionやサードパーティのライブラリを使用してサーバーに転送できましたか? – Anna

+0

私のポストをいくつかの情報で更新しました。 – wstr

+0

私はあなたが選択されたインデックスパスのリストを追跡しているなら、最も簡単な方法はNSIndexPathオブジェクトを含むNSMutableArrayを持つことだと思います。しかし、サーバーは「セクション1、行3」が何に関係しているかをどのように知っていますか?おそらく、テーブルビューに表示されているモデルオブジェクトに関連する一意の識別子を送信する必要があります(表示されるセクション+行ではありません)。 – Anna

答えて

0

これは私の問題を解決するようです。誰かがより洗練された解決策を知っているなら、私に教えてください。

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

    if ([self.tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark) { 

     [self.tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; 
     [self.tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor colorWithRed:0.0/255 green:0.0/255 blue:0.0/255 alpha:1]; 
     [selectedSources removeObject:[NSNumber numberWithInt:indexPath.row]]; 

    } else { 

     [self.tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; 
     [self.tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor colorWithRed:72.0/255 green:104.0/255 blue:152.0/255 alpha:1]; 
     [selectedSources addObject:[NSNumber numberWithInt:indexPath.row]]; 

    } 

    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 

} 

selectedSources NSMutableArrayの、Iその後、JSONエンコードと私のサーバーに送信されます。インデックスパスに基づいて、どのテーブルビューセルがサーバー側にチェックされているかチェックされていないかを識別できます。

ありがとう、アンナ!

+0

これは何の問題もなく(十分に速く、正しい行が送られてくる)、okですが、セルから直接読み書きするのではなく、このメソッドでselectedSources配列を読み書きするだけです最後にreloadRowsAtIndexPathを呼び出します(cellForRowAtIndexPathではselectedSourcesをチェックし、accessoryTypeなどを適切に設定します)。 – Anna

関連する問題