2011-11-19 119 views
0

我想显示表格单元格样式2中的字典变量数组,这是联系人应用程序用来显示联系人信息的内容。 出于某种原因,单元格样式不显示。UITableView不显示单元格样式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出口链接到文件的所有者,并且同样为委托人和来源完成。我已将样式更改为分组。 但是,如上图所示,当我运行该程序单元格不显示在指定的适当样式我也不知道如何让每一行显示在不同的部分。 - >我想到了一个Array> Array> Dictionary变量,但是我完全不知道如何实现这一点。

我还是比较新的Objective-c,所以你可能需要用实际的代码实现来解释,以演示如何实现这一点。

在此先感谢您花时间回答此问题。

回答

1

有2个问题,我想可能是在用自己的方式:

  • 填充单元格时,但您正在使用@“标签”为重点@“标签”填充字典时。这些密钥区分大小写
  • 您正在使用indexPath.row,因为每个部分有2行,所以这只会是0或1。您应该使用indexPath.section,因为数组中的每个条目都有一个部分。

虽然我不确定你希望在第一行和第二行看到什么。

好吧,我已经看过了你的问题,你似乎正在让事情变得比他们需要的复杂一点。您似乎有一个主机名和一个IP地址,您希望在一个部分的两个单元格中显示该部分的每个部分中都有相同的标签。

为什么不只有一个字典数组,其中包含名称和IP地址,然后在cellForRowAtIndexPath中根据节号选择字典,然后根据行号显示字典中的相关项目,并硬编码那个标签?

顺便说一句,你的单元格样式不会出现的原因是因为你因为上面提到的问题传递了零的标签,所以它似乎只有一个标签。

+0

谢谢jrturton!标签拼写解决了主要问题。经过一些进一步的代码修改后,我了解了indexPath.Section注释。 现在我同意“为什么不只是有一个单一的字典阵列”。但是我打算使用主机,主机名和它们的字段的数据结构。有没有更简单的方法来实现呢?你能以不同的方式提出建议吗? –

+0

我建议你作为一个新问题提出问题,给出你计划存储的数据种类以及你打算如何处理,你会得到很多帮助。 – jrturton