我想创建可以在分段表视图中显示位置信息的应用程序(如下所示)。
[section 1]
[row 1 - location information];
[row 2 - location information];
[section 2]
[row 1 - location information];
[row 2 - location information];
[row 3 - location information];
...
我的想法是创建2个数组。一个是节头的关键数组。另一个数组用于表视图行。 在我的应用程序中,键数组有3个对象。另一个数组有18个对象。即,有3个节标题,并在每个节中显示6个对象/表视图行。如何正确地将这些信息填充到节表视图中??
答案 0 :(得分:0)
最好的解决方案是创建一个包含两个对象(即数组)的字典。 密钥可以是该部分的名称。
现在,使用一个对象(Dictionary),您可以获得所需的所有信息。
numberOfSections中的只返回[NSDictionary allKeys] .count。 在cellForRow中根据indexPath从右侧数组中获取对象。 在numberOfRows中,只需根据indexPath从字典中获取正确的数组并返回对象的数量。
答案 1 :(得分:0)
//setting number of sections
- (int)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
return [keyArray count];
}
//setting the title for the section
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString *sectionName;
sectionName = [keyArray objectAtIndex:section];
return sectionName;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * MyIdentifier = @"MyIdentifier";
UITableViewCell * cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
cell.textLabel.text = [otherArray objectAtIndex:indexPath.row];
return cell;
}
希望这可以帮助你开始......
我的建议是使用字典。键是节的标题,值是行的标题。
答案 2 :(得分:0)
拥有单个阵列更好。您可以像这样格式化数组
[
{
"Title": "Title of section 1",
"Rows": [
{
"Title": "Value 1",
"SubTitle": "Value 2"
},
{
"Title": "Value 1",
"SubTitle": "Value 2"
},
{
"Title": "Value 1",
"SubTitle": "Value 2"
}
]
}
]
一个包含截面字典的主要数组。 Section将拥有自己的数据以及行的字典数组。
如果此结构存储在数组中。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
[self.array count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSDictionary *section = self.array[section];
NSArray *rows = section[@"Rows"];
retrun [rows count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSDictionary *section = self.array[section];
return section[@"Title"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Initialization of cell
NSDictionary *section = self.array[indexPath.section];
NSArray *rows = section[@"Rows"];
NSDictionary *row = rows[indexPath.row];
NSString *title = row[@"Title"];
NSString *sutTitle = row[@"SubTitle"];
//Assign them
return cell;
}
答案 3 :(得分:0)
如果有人还在寻找这个答案,我可以使用Swift
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("item", forIndexPath: indexPath)
var item: Item!
if indexPath.section == 0{
item = array1[indexPath.row]
}
if indexPath.section == 1{
item = array2[indexPath.row]
}
cell.textLabel?.text = item.name
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
if section == 0 {
return array1.count
}
return array2.count
}