1

虽然使用 iOS 5.1 Simulator 应用程序感觉很棒,但在 iOS 4.3 Simulator 上对其进行测试后,出现了一些难以理解的问题:

我为 UITableView 使用自定义 UITableViewCell,它有几个 UILabels 和一个 UITextView。问题是 textColor 属性似乎根本不起作用 - 尽管显示了背景并且 NSLog 打印了正确的文本,但我标签上的所有文本仍然不可见。我尝试在 IB 中和以编程方式更改 textColor 值,但都没有帮助。

UITextView 怎么样 - 没关系。我想,我可以用 textViews 替换所有标签,但这不是编程的好方法,是吗?

对于您的任何帮助,我将不胜感激,因为它让我大吃一惊!

更新(添加源代码)

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

    FeedItemCell *cell = [tableView dequeueReusableCellWithIdentifier:[FeedItemCell cellID]];
    if (!cell) {
        cell = [FeedItemCell cell];
    }

    NSIndexPath *selectedPath = [tableView indexPathForSelectedRow];
    if (selectedPath && (indexPath.row == selectedPath.row) ) {
        [self selectRowAtIndexPath:indexPath];
    }

    [cell fillWithContents:[feedItemsController.fetchedObjects objectAtIndex:indexPath.row]];
    return cell;
}

//---
@implementation FeedItemCell 

- (void)fillWithNewsItemContents:(FeedItem *)feedItem {
    self.nameLabel.text = [feedItem.creator fullName];
    self.dateLabel.text = [TimeFormatter newsTimeWithDate:feedItem.postedDate];
    self.detailTextView.text = [FeedItemCell detailTextViewStringFromFeedItem:feedItem];
    self.commentLabel.text = [self _commentsTitleWithNews:feedItem];
    self.avatarImageView.image = [feedItem.creator avatar];
}

所有的UILabels 都在xib-file 中定义在此处输入图像描述

4

3 回答 3

1

看来我找到了解决方案。由于某种原因UILabel,iOS 4.3 中不支持 Helvetica Neue 字体(尽管UITextView确实如此)。我只是注意到它添加了其他测试UILabel,并在成功后试图找到新旧测试之间的区别。

因此现在只需要选择另一种合适的字体:)

非常感谢大家,也很抱歉无缘无故地打扰。

于 2012-08-01T10:55:42.117 回答
0

这很奇怪。但我建议您在实际的 iOS 4.3 和 5.1 设备上进行测试。模拟器的准确率是 95%,而不是 100%。因此,您应该对设备进行完整性检查。

于 2012-07-31T17:08:09.923 回答
0

看到你的代码真的很棒——特别是,我想看到:

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

或者您在其他任何地方分配、实例化并添加这些行为不端UILabel的子视图。但我可以对可能出现的问题做出几个猜测:

  • 您可能正在尝试在UILabel正确分配或实例化它之前设置它的元素。例如,如果您调用:

    [myLabel setText:@"Hello"];
    

    在您致电之前:

    UILabel *myLabel = [[UILabel alloc] initWithFrame:someFrame];
    

    如果你做这样的事情,它会很好地编译并在运行时静默失败。

  • 您可能忘记将标签添加到正确的位置UIView- 在 aUITableViewCell中,内容通常应作为单元格contentView属性的子视图添加:

    [[myCell contentView] addSubview:myLabel];
    

还有一些其他的事情可能会发生,但我宁愿在盲目猜测之前先看看你正在使用的代码。那我会更新我的答案。

于 2012-07-31T17:25:05.600 回答