【问题标题】:Programmatically modify a UITableViewCell initialized from a nib?以编程方式修改从笔尖初始化的 UITableViewCell?
【发布时间】:2010-12-30 02:22:19
【问题描述】:

我正在使用 [[NSBundle mainBundle] loadNibNamed:...] 从 nib 加载 UITableViewCell。现在我想在我的代码中使用 tableviewcell 之前以编程方式做一些初始化后的工作。我应该把这段代码放在哪里,因为我似乎无法在 initWithCoder 方法中这样做,因为类中的标签对象仍然为零(所以不能设置任何东西)。 tableviewcell 中的 UILabel 是什么时候初始化的(它们都定义为 IBOutlets)?

【问题讨论】:

    标签: iphone uitableview initialization nib


    【解决方案1】:

    您应该继承UITableViewCell,并在其中放入awakeFromNib 方法,以便在从笔尖唤醒后执行初始化。

    为了让您的代码保持灵活,将此初始化代码放在名为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]; 的一个讨厌的演员表)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多