我正在创建一个静态表视图(必须与iOS 4兼容 - 所以我不能使用iOS 5的方法)。
我的方式是我有两个部分;第一个有一个单元格,第二个有两个单元格。我制作了两个数组,一个是第一部分中唯一一个单元格的标题,另一个是第二部分中两个单元格的两个标题。所以我的字典看起来像这样:
(NSDictionary *) {
First = (
Title1 < --- Array (1 item)
);
Second = (
"Title1", < --- Array (2 items)
Title2
);
}
我遇到的问题是我需要使用tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
返回一个部分中的行数。所以我的问题是,如何使用NSInteger section
从字典中检索部分?我也必须在tableView:cellForRowAtIndexPath
中做同样的事情。
谢谢
答案 0 :(得分:1)
如果您不了解字典的工作原理,我建议您简化问题。为每个部分创建一个数组,然后在委托方法中使用switch()语句为行计数等调用[数组计数]。对于部分计数,您仍然可以使用[[dictionary allKeys] count]的原始字典。
编辑: 我刚看到@fzwo在两条评论中推荐了相同的内容
答案 1 :(得分:1)
最好的选择是阵列阵列,如前所述。为避免词典的复杂性,请为表格数据和章节标题创建两个NSArray
ivars。
// in viewDidLoad
tableData = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:
@"Row one title",
@"Row two title",
nil],
[NSArray arrayWithObjects:
@"Row one title",
@"Row two title",
@"Row three title",
nil],
nil];
sectionTitles = [NSArray arrayWithObjects:
@"Section one title",
@"Section two title",
nil];
// in numberOfSections:
return tableData.count;
// in numberOfRowsInSection:
return [[tableData objectAtIndex:section] count];
// in titleForHeaderInSection:
return [sectionTitles objectAtIndex:section];
// in cellForRowAtIndexPath:
...
cell.textLabel.text = [[tableData objectAtIndex:indexPath.section]
objectAtIndex:indexPath.row];
如果您的单元格需要更多数据,则可以使用其他对象而不是行标题。
答案 2 :(得分:-3)
要获取部分中的行数,您可以使用以下内容:
tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *key = [[dictionary allKeys] objectAtIndex: section];
return [[dictionary objectForKey:key] count];
}
获取单元格值:
tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *key = [[dictionary allKeys] objectAtIndex: indexPath.section];
NSArray *values = [dictionary objectForKey:key];
NSString *value = [values objectAtIndex: indexPath.row];
// code to create a cell
return cell;
}