2

ソースとして辞書の配列を持つ UITableView を構築しています。各ディクショナリにはキーとして文字があり、値として連絡先の配列があります。たとえば、キー "A" - 値 "Adam, Alex, Andreas" です。私の問題は、セクションごとの正しい行数またはセクションのタイトルを取得できないことです...ちなみに、私はObjective-Cを初めて使用するので、私の質問が奇妙に思えたら申し訳ありません。いくつかのガイダンスをいただければ幸いです。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //tableContent is my array of dictionaries
    return [self.tableContent count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //here I don't know how to get the dictionary value array length that would be the
    //the number of contacts per letter
    return ?
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    //here I don't know how to get the dictionary key to set as section title
    retrun ?
}
4

2 に答える 2

2

理由もなく、データを配列にラップしているようです。あなたのデータが単なる辞書である場合、それはあなたにとってより簡単になるでしょう

@property (nonatomic, strong) NSDictionary *tableContent;

...

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
  return [self.tableContent count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  NSString *key = [self tableView:nil titleForHeaderInSection:section];
  return [[self.tableContent objectForKey:key] count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
  return [[self sortedKeys] objectAtIndex:section];
}

- (NSArray *)sortedKeys;
{
  return [self.tableContent.allKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
}
于 2012-11-06T19:27:06.383 に答える
0

私がそれを読んだとき、各辞書には1つのキー(および一致する配列)しかないようです。self.tableContentその場合は、セクション オフセットにある辞書を取得します。numberOfRowsInSection:連絡先配列内のオブジェクトの数を返しtitleForHeaderInSection:、キーを返します。ディクショナリから取得するallValuesと、各ディクショナリにあるキーをallKeys追跡しようとするよりも簡単になる場合があります。

(辞書ではなく、カスタム オブジェクトの配列を使用する方が簡単な場合もあります。その場合、各オブジェクトには、タイトル プロパティと連絡先配列プロパティを含めることができます。)

于 2012-11-06T16:31:58.707 に答える