我无法设置UILabel对象的属性。
以下代码采用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法:
UILabel *label = (UILabel *)[cell viewWithTag:0];
label.text = [self.comments objectAtIndex:indexPath.row*2];
label.textColor = [UIColor cyanColor];
label.adjustsFontSizeToFitWidth = YES;
我得到的只是第四行的运行时错误(奇怪的是,前面的行没问题):
2011-06-29 11:23:57.641 Esker Monitor[94138:207] -[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0
2011-06-29 11:23:57.642 Esker Monitor[94138:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0'
类似的标签属性修改(例如label.numberOfLines = 1;
和label.minimumFontSize = 7.0;
)也会导致程序崩溃。
这里有什么微妙的我不明白吗?
答案 0 :(得分:6)
如果要访问标准UITableViewCell中内置的标签,请使用单元格的textLabel属性:
UILabel *label = cell.textLabel;
...
如果您将自定义标签添加到单元格,我建议使用一些非零标签,因为0是默认标签值,所以
[cell viewWithTag:0];
可以返回任何带有0标记的子视图 - 不需要标记。因此,为您的标签指定一些非零标签,并将其添加到单元格的contentView,而不是直接添加到单元格 - 这将帮助您避免一些布局问题,例如当单元格进入编辑状态时。稍后您可以通过以下方式访问该标签:
UILabel *label = (UILabel*)[cell.contentView viewWithTag:kSomeNonZeroTag];
text和textColor方法仍然有效的原因是UITableViewCell实际上实现了这些方法(它们起源于单元格未公开公开其标签并且自SDK 3.0起不推荐使用的时候)
答案 1 :(得分:2)
实际上[cell viewWithTag:0]
本身会返回UITableViewCell
。所以,只需将 UILabel 的tag
更改为其他内容,例如100,101等,
答案 2 :(得分:1)
您正在使用不同的对象制作标签(标签0用于单元格而不是标签)。检查您为UILabel标签制作的对象, 它不是UILabel类型。它需要UITableViewCell类型。
这就是它崩溃的原因。
答案 3 :(得分:0)
你需要使用cell.textLabel来访问标签,现在,由于“label”本身有UITableViewCell的引用,它会产生错误。
答案 4 :(得分:0)
为子视图提供适当的标签,然后尝试。或者,如果要设置表视图单元格的默认标签,则应使用cell.textLable
答案 5 :(得分:0)
在TableViewCell类的标题中,您应该创建
@property (nonatomic, retain) UILabel *textLabel;
在TableViewCell实现类中,确保您拥有@synthesize textLabel
在cellForRowAtIndex中,您可以从该TableViewCell类创建单元格。你可以使用这个函数获得单元格
MyCustomizedCell *cell = (MyCustomizedCell *)[tableView dequeueReusableCellWithIdentifier:(NSString *) myIndent];
依此类推,您可以像使用
一样轻松使用TableViewCell中的每个对象
cell.textLabel.adjustsFontSizeToFitWidth = YES;
或
[cell.textLabel setAdjustsFontSizeToFitWidth:YES];
答案 6 :(得分:-2)
你可以这样做:
[cell.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
[cell.textLabel setTextColor:[UIColor colorWithRed:222.0/255.0 green:221.0/255.0 blue:221.0/255.0 alpha:1.0]];
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
您可以像这样调整任何属性。
如有任何困难,请告诉我。
干杯。