UITableViewCell 子类不允许我设置标签文本
Posted
技术标签:
【中文标题】UITableViewCell 子类不允许我设置标签文本【英文标题】:UITableViewCell subclass doesn't let me set label text 【发布时间】:2012-09-14 11:48:08 【问题描述】:我创建了UITableViewCell
的子类,以获得更大的 TableViewCell 和更多选项。
但我的问题是我无法设置标签的文本:
BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]];
NSLog(@"%@", [bi title]);
[[cell mainLabel] setText:[bi title]];
NSLog(@"%@", [[cell mainLabel] text]);
第一条日志消息返回我期望的文本,但第二条总是记录(null)。
我真的不知道应该是什么问题。我像往常一样创建了标签:
@property (weak, nonatomic) IBOutlet UILabel *mainLabel;
当然,我连接了标签并合成了它们(检查了两次)。我也实现了方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
为每个单元格获取适当的高度(效果很好)。
顺便说一句,复选标记按预期显示。这只是关于标签。
【问题讨论】:
在我看来,cell 是 nil。首先尝试记录以确保您确实有一个单元格对象。 您是否在 xib 文件中附加了带有单元格的标签 Outlet...?如果是,那么检查你的单元格,要么是零??? 单元格存在:例如:确保您在 cellForRowAtIndexPath
方法中实例化您的自定义 UITableViewCell
子类。还要确保那些IBOutlets
是在你的UITableView
子类中声明的,而不是在包含TableView
的视图控制器中。还要确保界面生成器中单元格的父类设置为相同的子类。
类似这样的东西(自定义UITableViewCell
子类接口文件):
#import <UIKit/UIKit.h>
@interface MyCustomCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *mainLabel;
@end
然后在实现文件中@synthesize
:
@synthesize mainLabel;
然后在cellForRowAtIndexPath
中,类似:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]];
// Configure the cell...
cell.mainLabel.text = [bi title];
// ... Other stuff
return cell;
【讨论】:
好吧,我的代码已经是这个样子了。唯一的区别是您将 IBOutlet 声明为强。当我学习编程时,我被告知总是将 IBOutlets 设置为弱属性。我现在将其更改为强并初始化它们。现在文本至少设置正确。因此,它不显示任何内容。以上是关于UITableViewCell 子类不允许我设置标签文本的主要内容,如果未能解决你的问题,请参考以下文章
为子类 UITableViewCell 上的披露按钮设置目标
如何设置我的 UITableViewCell 子类的子视图以使用自动调整大小的蒙版?