次のように plist ファイルを作成しました。すべてのセクションは同じ構造に従います。
<array>
<dict>
<key>image</key>
<string>gradient1.png</string>
<key>name</key>
<string>Section 1</string>
<key>list</key>
<array>
<dict>
<key>questionTitle</key>
<string>How are you doing?</string>
<key>questionInfo</key>
<string>questionInfo1</string>
</dict>
<dict>
<key>questionTitle</key>
<string>What are you doing?</string>
<key>questionInfo</key>
<string>questionInfo2</string>
</dict>
<dict>
<key>questionTitle</key>
<string>Where are you going</string>
<key>questionInfo</key>
<string>questionInfo3</string>
</dict>
</array>
</dict>
これをネストしたテーブルで使用しています。セクションのタイトルに「名前」を使用し、さまざまな質問とそれに関連する情報を含む新しい配列を作成したいと考えています..
- (void) setCategoryArray
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@"QuestionList" withExtension:@"plist"];
NSArray *mainArray = [[NSArray alloc] initWithContentsOfURL:url];
NSMutableArray *categoryArray = [[NSMutableArray alloc] initWithCapacity:[mainArray count]];
for (NSDictionary *dictionary in mainArray) {
Category *category = [[Category alloc] init];
category.name = [dictionary objectForKey:@"name"];
category.list = [dictionary objectForKey:@"list"];
questionList = category.list;
NSLog(@"%@", questionList);
category.image = [dictionary objectForKey:@"image"];
[categoryArray addObject:category];
}
NSMutableArray *questionArray = [[NSMutableArray alloc] initWithCapacity:nil];
for (NSDictionary *dictionary in questionList) {
Category *question = [[Category alloc] init];
question.questionTitle = [dictionary objectForKey:@"questionTitle"];
question.questionInfo = [dictionary objectForKey:@"questionInfo"];
[questionArray addObject:question];
}
self.categoryList = categoryArray;
self.questionList = questionArray;
}
questionArray を作成する方法またはテーブルのラベルでそれを参照する方法 (以下を参照) におそらく問題があると思いますが、すべてのセルに対して同じエントリを取得します (ただし、最初または最後のエントリが繰り返されるわけではありません)。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SavedCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Category *question = (Category *)[self.questionList objectAtIndex:indexPath.section];
UILabel *questionNameLabel = (UILabel *)[cell viewWithTag:101];
questionNameLabel.text = question.questionTitle;
return cell;
}
助けてくれてどうもありがとう!