我正在尝试在表单元格样式2中显示一个字典变量数组,这是联系人应用程序用来显示联系人信息的内容。 由于某种原因,细胞样式没有显示出来。
数组变量“arrayOfDictionaries_E”,具有以下设置。
/// Dictionary 1
NSArray *dataArray = [NSArray arrayWithObjects: @"Host", hostname, nil];
NSArray *keysArray = [NSArray arrayWithObjects: @"Label", @"Data", nil];
NSDictionary *host_dict = [[NSDictionary alloc] initWithObjects: dataArray forKeys: keysArray];
/// Dictionary 2
NSArray *dataArray2 = [NSArray arrayWithObjects: @"IP", hostIP, nil];
NSArray *keysArray2 = [NSArray arrayWithObjects: @"Label", @"Data", nil];
NSDictionary *ip_dict = [[NSDictionary alloc] initWithObjects: dataArray2 forKeys: keysArray2];
// Storage into Array of Dictionaries
NSArray *dictionariesArray = [[NSArray alloc] initWithObjects: host_dict, ip_dict, nil];
我测试过该数组包含2个词典,并且两个词典都已填充。
所以我遇到了麻烦: 首先,我希望所有单元格都使用CellStyle2。 其次,我希望在新的部分中创建每个字典。 (如联系人应用程序,有选择地将项目组捆绑在一起)
所以这里是我的实现文件中的代码。它是一个采用2个UITableView协议的UIViewController。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return [arrayOfDictionaries_E count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return 2;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
}
NSDictionary * dict = [arrayOfDictionaries_E objectAtIndex:indexPath.row];
cell.textLabel.text = [dict objectForKey:@"label"];
cell.detailTextLabel.text = [dict objectForKey:@"Data"];
return cell;
}
查找the current tableView here的屏幕截图。
在笔尖上,我已将tableView插座链接到文件的所有者,并为委托和源同样完成。我已将Style更改为Grouped。 但是如上图所示,当我运行程序时,单元格不会以指定的正确样式显示,我也不知道如何让每一行显示在单独的部分中。 - >我想到了一个数组>数组>字典变量,开始工作,但是我很遗憾这是如何实现的。
我仍然是Objective-c的新手,因此您可能需要解释实际的代码实现,以演示如何实现这一目标。
先谢谢你抽出时间回答这个问题。
答案 0 :(得分:1)
我认为有两个问题可能妨碍您:
我不确定你期望在第一行和第二行看到什么。
好的,我再看看你的问题,你似乎把事情变得比他们需要的要复杂得多。您似乎具有要在节中的两个单元格中显示的主机名和IP地址,并且该节的每个部分中都有相同的标签。
为什么不只有一个字典数组,保存名称和IP地址,然后在cellForRowAtIndexPath中根据节号选择字典,然后根据行号显示字典中的相关项,并硬编码标签在那时候?
顺便说一下,您的单元格样式没有出现的原因是由于上面提到的问题,您为标签传递了nil,因此它似乎只有一个标签。