菜鸟教程小白 发表于 2022-12-12 16:52:28

iphone - 子类化 UITableViewCell 后标签不会显示文本


                                            <p><p>所以我知道这是被问了一百万次。也许我太累了,但我不明白为什么这个标签文本不会更新。这是我的代码</p>

<p>CustomCell.h</p>

<pre><code>#import &lt;UIKit/UIKit.h&gt;


@interface CustomCell : UITableViewCell {
    UILabel *mainLabel;
    UILabel *leftBottomLabel;
    UILabel *rightBottomLabel;

}


@property (nonatomic, retain) UILabel *mainLabel;
@property (nonatomic, retain) UILabel *leftBottomLabel;
@property (nonatomic, retain) UILabel *rightBottomLabel;


@end
</code></pre>

<p>CustomCell.m</p>

<pre><code>#import &#34;CustomCell.h&#34;


@implementation CustomCell

@synthesize mainLabel;
@synthesize leftBottomLabel;
@synthesize rightBottomLabel;



-(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

    if (self = ) {
      // Initialization code


      UIView *myContentView = self.contentView;



      self.mainLabel.textAlignment = UITextAlignmentLeft;
      ;
      ;



      self.leftBottomLabel.textAlignment = UITextAlignmentLeft;
      ;
      ;


      self.rightBottomLabel.textAlignment = UITextAlignmentLeft; // default
      ;
      ;
    }


    return self;
}


- (void)layoutSubviews {

    ;


    CGRect contentRect = self.contentView.bounds;
    CGFloat boundsX = contentRect.origin.x;
    CGRect frame;


      frame = CGRectMake(boundsX + 10, 4, 200, 20);
      self.mainLabel.frame = frame;
      self.mainLabel.backgroundColor = ;

      frame = CGRectMake(boundsX + 10, 28, 200, 20);
      self.leftBottomLabel.frame = frame;
      self.leftBottomLabel.backgroundColor = ;


      frame = CGRectMake(boundsX + 100, 28, 200, 14);
      self.rightBottomLabel.frame = frame;
      self.rightBottomLabel.backgroundColor = ;

}



- (void)dealloc {

    ;
    ;
    ;
    ;
}

@end
</code></pre>

<p>MyView.m</p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @&#34;Cell&#34;;

    CustomCell *cell = (CustomCell *);
    if (cell == nil) {
      cell = [[ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

    cell.mainLabel.text = @&#34;Hello&#34;;
return cell;
}
</code></pre>

<p>有什么想法吗?我在这个标签上什么都没有,不知道为什么。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您需要先创建每三个标签,然后才能更改它们的属性或进行任何屏幕绘制。目前,这三个标签才被宣布。要修复,在您的 <code>initWithStyle:reuseIdentifier:</code> 中,在顶部添加以下内容:</p>

<pre><code>self.mainLabel = [ init];
self.leftBottomLabel = [ init];
self.rightBottomLabel = [ init];
</code></pre>

<p>您的 <code>layoutSubviews</code> 代码将处理框架更改(这就是为什么您不需要 <code>[ initWithFrame..]</code> 来初始化,因为您自己设置框架later) ' 在适当的时间,您的标签现在应该可以正确显示了。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 子类化 UITableViewCell 后标签不会显示文本,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6805331/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6805331/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 子类化 UITableViewCell 后标签不会显示文本