iphone - 以编程方式修改从 Nib 初始化的 UITableViewCell?

标签 iphone uitableview initialization nib

我正在使用 [[NSBundle mainBundle] loadNibNamed:...] 从 Nib 加载 UITableViewCell。现在我想在我的代码中使用 tableviewcell 之前以编程方式执行一些初始化后工作。我应该把这段代码放在哪里,因为我似乎无法在 initWithCoder 方法中执行此操作,因为类中的标签对象仍然为零(因此无法设置任何内容)。 tableviewcell 中的 UILabels 何时首先初始化(它们都定义为 IBOutlet)?

最佳答案

您应该子类化UITableViewCell,并在其中放置一个awakeFromNib方法,以在从 Nib 唤醒后执行初始化。

为了保持代码的灵 active ,请将此初始化代码放入名为 myInit 的例程中,并从 awakeFromNib 以及其他应该调用它的地方调用它。

经过一番努力,我针对这种情况想出了一个稍微不同的方法。我子类化 UITableViewCell 并有一个像这样的初始化例程:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        [[NSBundle mainBundle] loadNibNamed:@"MyUITableViewCell" owner:self options:nil];
        [self addSubview:self.contentView];
    }
    return self;
}

其中 contentView 是包含单元格内容的 IBOutlet。这允许我的其余代码像任何其他单元一样调用此单元。 (除了 (MyUITableViewCell*)[tv dequeueReusableCellWithIdentifier:CellIdentifier]; 的一个令人讨厌的类型转换)

关于iphone - 以编程方式修改从 Nib 初始化的 UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4559533/

相关文章:

ios - 我无法在 TableView 内加载 TableView 单元格

bitmap - 通过使用更多空间来实现恒定的初始化时间-编程珍珠 - 第 1 栏

c++ - 在 C++ 中访问 lambda 之外的 lambda 捕获初始化变量

iphone - 来自 AVPlayer 对象的 AudioQueueLevelMeterState

ios - Client udid 是大写的,但我的 mac 中的相同设备返回小写的 udid,是一样的吗?

ios - 如何在使用部分索引时按字母顺序填充 tableView 中的数据

c++ - 为什么变量用最大值而不是零初始化

iphone - 链接自动打开我的应用程序?

iphone - 如何将所有公开推文的列表导入 iPhone

ios - 使用 UIProgressView Indicator 在 UITableView 中下载图像