IOS 7 - 无法在自定义UITableView单元格中设置UITextView的字体颜色

jd1*_*182 27 iphone xcode objective-c uitableview ios

我坚持认为这是一件很简单的事情.我有一个包含UITextView对象的自定义表格单元格.我希望此对象中的文本为灰色.当我在界面构建器中设置颜色时,它将其显示为灰色,但在模拟器中它仍然是黑色.

这是一个如何设置的故障:

  1. 该应用程序基于主/详细模板
  2. 我创建了一个类,它是UITableViewCell的子类
  3. 我在类中添加了两个属性,一个UILabel的插座和一个UITextView
  4. 我通过添加UITextView(它已经有一个UILabel)改变了默认的原型单元格
  5. 我将原型单元格的类更改为自定义单元格类
  6. 我将单元格中的UITextView和UILabel连接到我的单元类中的两个出口

我更新了MasterViewController以填充我的自定义单元格.当我运行模拟器时,它在显示数据的自定义单元格方面都能正常工作.

正如我之前提到的,当我尝试更改自定义单元格的UITextView中的文本颜色时出现问题.如果我在界面构建器中将其设置为浅灰色,则它在模拟器中无效.

我已经在下面提供了相关的代码片段和截图.我不是100%确定什么与问题有关,什么不是,如果你需要看到我未在下面显示的东西,只要问我将提供它.

**编辑

当我注销我的UITextView的颜色属性时,它输出(null).请参阅下面的MasterViewController.m代码.

自定义单元格 - NTFYNoteCell.h

#import <UIKit/UIKit.h>

@interface NTFYNoteCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UITextView *descriptionText;

@end
Run Code Online (Sandbox Code Playgroud)

取自MasterViewController.m:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NTFYNoteCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"     forIndexPath:indexPath];

    NTFYNote *note = _notes[indexPath.row];

    cell.titleLabel.text = [note title];
    cell.descriptionText.text = [note shortDescription];

    NSLog(@"TEXTVIEW: %@", cell.descriptionText);
    NSLog(@"TEXT COLOR: %@", cell.descriptionText.textColor); // This outputs (null)

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码调出:

2014-01-19 19:42:52.001 appname[5050:70b] TEXTVIEW: <UITextView: 0xa1bfe00; frame = (14 26; 273 57); text = 'This is a generic descrip...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x8be0530>; layer = <CALayer: 0x8be1fe0>; contentOffset: {0, 0}>
2014-01-19 19:42:52.001 appname[5050:70b] TEXT COLOR: (null)
2014-01-19 19:42:52.004 appname[5050:70b] TEXTVIEW: <UITextView: 0xa1cd400; frame = (14 26; 273 57); text = 'This is a generic descrip...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x8b8fb40>; layer = <CALayer: 0x8bf5300>; contentOffset: {0, 0}>
2014-01-19 19:42:52.005 appname[5050:70b] TEXT COLOR: (null)
2014-01-19 19:42:52.007 appname[5050:70b] TEXTVIEW: <UITextView: 0xe17e000; frame = (14 26; 273 57); text = 'This is a generic descrip...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0xd857bb0>; layer = <CALayer: 0xd85d610>; contentOffset: {0, 0}>
2014-01-19 19:42:52.007 appname[5050:70b] TEXT COLOR: (null)
2014-01-19 19:42:52.009 appname[5050:70b] TEXTVIEW: <UITextView: 0x99af200; frame = (14 26; 273 57); text = 'This is a generic descrip...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x8a81ea0>; layer = <CALayer: 0x8a580c0>; contentOffset: {0, 0}>
2014-01-19 19:42:52.009 appname[5050:70b] TEXT COLOR: (null)
Run Code Online (Sandbox Code Playgroud)

UITextView连接到我的自定义单元格中的插座:

UITextView连接到插座

在界面构建器中将字体颜色设置为浅灰色:

UITextView字体颜色设置为浅灰色

它在iPhone模拟器中的样子:

表格视图在模拟器中的样子

jd1*_*182 114

在解决了这个问题后,我带着新信息回到谷歌,发现了以下Stack Overflow问题:

UITextView字体为零

如果你没有检查UITextView属性下的'Selectable'复选框,它就不会响应任何字体变化,包括颜色.

我检查了这个盒子,现在它都按预期工作了.

谢谢你的帮助!

  • 多么奇怪的联系.我永远不会想到这个......谢谢 (4认同)