【发布时间】:2014-02-08 20:55:41
【问题描述】:
我被困在我认为很容易解决的事情上。我有一个包含 UITextView 对象的自定义表格单元格。我希望这个对象中的文本是灰色的。当我在界面生成器中设置颜色时,它显示为灰色,但在模拟器中它仍然是黑色。
下面是它的设置方式:
- 应用程序基于主/从模板
- 我创建了一个类,它是 UITableViewCell 的子类
- 我在类中添加了两个属性,一个用于 UILabel 和一个 UITextView 的插座
- 我通过添加 UITextView 更改了默认原型单元格(它已经有一个 UILabel)
- 我将原型单元的类更改为我的自定义单元类
- 我将单元格中的 UITextView 和 UILabel 连接到单元格类中的两个插座
我更新了 MasterViewController 来填充我的自定义单元格。当我运行模拟器时,就显示数据的自定义单元格而言,一切正常。
正如我之前提到的,当我尝试更改自定义单元格的 UITextView 中文本的颜色时,问题就出现了。如果我在界面生成器中将其设置为浅灰色,则它在模拟器中无效。
我在下面包含了相关的代码 sn-ps 和屏幕截图。我不能 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
取自 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;
}
从上面的代码中调试出来:
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)
UITextView 连接到我的自定义单元格中的插座:
在界面生成器中将字体颜色设置为浅灰色:
它在 iPhone 模拟器中的样子:
【问题讨论】:
-
请显示您在哪里创建这些单元格的代码。
-
我已经添加了 MasterViewController 中设置单元格内容的部分——我认为这是你所要求的。谢谢!
-
使用 NSAttributedString。见:stackoverflow.com/questions/14287386/…
-
iOS 中存在一个错误:更改文本也会更改颜色。您需要在更改文本之后更改文本颜色,即 tv.text = @"asd"; tv.textColor = [UIColor 随便]。
标签: ios iphone objective-c xcode uitableview