UITableView未显示单元格样式2

时间:2011-11-19 15:24:21

标签: objective-c 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插座链接到文件的所有者,并为委托和源同样完成。我已将Style更改为Grouped。 但是如上图所示,当我运行程序时,单元格不会以指定的正确样式显示,我也不知道如何让每一行显示在单独的部分中。 - >我想到了一个数组>数组>字典变量,开始工作,但是我很遗憾这是如何实现的。

我仍然是Objective-c的新手,因此您可能需要解释实际的代码实现,以演示如何实现这一目标。

先谢谢你抽出时间回答这个问题。

1 个答案:

答案 0 :(得分:1)

我认为有两个问题可能妨碍您:

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

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

好的,我再看看你的问题,你似乎把事情变得比他们需要的要复杂得多。您似乎具有要在节中的两个单元格中显示的主机名和IP地址,并且该节的每个部分中都有相同的标签。

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

顺便说一下,您的单元格样式没有出现的原因是由于上面提到的问题,您为标签传递了nil,因此它似乎只有一个标签。