使用iOS 5.1模拟器应用程序感觉很棒,但在iOS 4.3模拟器上测试后出现了一些难以理解的问题:
我为UITableView使用自定义UITableViewCell,它有很少的UILabel和一个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];
}
所有UILabel
都在xib
- 文件中定义
答案 0 :(得分:1)
好像我找到了解决方案。出于某种原因,UILabel
不支持iOS 4.3中的Helvetica Neue字体(尽管UITextView
确实如此)。
我刚刚注意到它添加了其他测试UILabel
,并且在成功之后,试图找到新旧测试之间的差异。
因此现在只需要选择另一种合适的字体:)
非常感谢你们,并且在没有理由的情况下感到烦恼。
答案 1 :(得分:0)
这很奇怪。但我建议你测试实际的iOS 4.3和5.1设备。模拟器的准确率为95%,而不是100%。所以你应该对设备进行健全性检查。
答案 2 :(得分:0)
看到你的代码真的很棒 - 特别是,我想看看:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
或者您分配的任何其他地方,实例化并添加这些行为不端UILabel
作为子视图。但我可以猜测可能出现的问题:
您可能尝试在正确分配或实例化之前设置UILabel
的元素。例如,如果您致电:
[myLabel setText:@"Hello"];
在你打电话之前:
UILabel *myLabel = [[UILabel alloc] initWithFrame:someFrame];
如果您执行类似的操作,它将编译正常并在运行时静默失败。
您可能忘记将标签添加到正确的UIView
- 在UITableViewCell
中,内容通常应添加为单元格的contentView
属性的子视图:
[[myCell contentView] addSubview:myLabel];
还有其他一些事情可能会发生,但在做出任何盲目的猜测之前,我宁愿看到你正在使用的代码。我会更新我的答案。