使用Storyboard时,在非自定义原型UITableViewCell中显示detailTextLabel

时间:2012-02-28 08:21:06

标签: ios5 uitableview storyboard

我希望这些是我问题的充分答案:

不幸的是,要么我在这些评论中看到我的解决方案太过粗心,要么他们没有解决我的问题。

我很固执,因为我相信我应该能够在不创建自定义UITableViewCell的情况下显示详细文本标签,同时通过故事板创建我的界面。默认情节提要原型单元格没有样式选项。同样,我的代码中没有任何地方我实际分配这个单元格而不是在这里;因此,我假设它最初是在故事板中分配给不使用明细文本标签的默认样式。

当我使用以下代码填充单元格时,我的detailTextLabel不会出现:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSLog(@"This is never called!");
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    }

    // Configure the cell...
    switch(indexPath.section) {
        case 0: // boring cell
            cell.textLabel.text = [NSString stringWithFormat:@"Default label"];
            cell.textLabel.textAlignment = UITextAlignmentCenter;
            break;

        case 1: // loading cells based on contents of core data
            {           
            // get some data from previously retrieved core data objects
            NSManagedObject *rowObj = [myObjects objectAtIndex:[indexPath row]];
            NSDate *someDate = (NSDate*)[rowObj valueForKey:@"timeStarted"];
            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            [formatter setTimeStyle:NSDateFormatterNoStyle];
            [formatter setDateStyle:NSDateFormatterMediumStyle];
            NSString *stringFromDate = [formatter stringFromDate: someDate];

            // we have the fields ready; populate the cell
            NSLog(@"This prints a valid date:%@", stringFromDate);

            // this, also, displays just fine
            cell.textLabel.text = [NSString stringWithFormat:@"Default text"];

            // this does not appear
            cell.detailTextLabel.text = stringFromDate;
    break;
        }           
        default:
            break;
    }
    return cell;
}

如果在其他地方已经解决了我的搜索功能,或者如果有关于详细文本标签单元样式的UITableViewCells和故事板的讨论,我提前道歉,但我没有在我的搜索中看到它们。< / p>

具体来说,我需要更改代码以设置样式以使用详细文本标签,同时仍然使用非自定义原型UITableViewCells并保持故事板完好无损?

最后,这可能是完全不相关的(请忽略,如果是),如果我生成许多行,这样我可以向下滚动我的表,我的所有行看起来都很好,除了有几个(取决于我有多快)滚动)与其他(文本对齐)不同。也就是说,据我所知,我看到新单元被分配/初始化没有我在故事板中指定的相同默认设置。注意,下面的initWithStyle代码仍然没有被调用。如果我正确地理解了这一点,那么创建新单元格的幕后工作就会发生,我想知道在哪里可以设置样式首选项。但同样,如果这是一个无关问题的症状,请忽略,如果问题仍然存在,我可以发布另一个问题。

对不起文字墙。

1 个答案:

答案 0 :(得分:1)

我找到了解决最高问题的方法;我相信,我问题的最后一段是一个无关的问题。

使用情节提要时,请勿将您的标识符设置为您在代码中使用的标识符;您不会使用故事板中使用的默认单元格类型。通过共享相同的标签,故事板的已识别单元格的属性优先,它看起来像。