菜鸟教程小白 发表于 2022-12-13 04:02:13

iphone - CustomCell 中的标签保持为零


                                            <p><p>我创建了一个自定义 UITableViewCell,其中包含一个 UILabel。</p>

<p>在 cellForRowAtIndexPath 方法中,我初始化自定义单元格并给 UILabel 一个值。</p>

<p>在加载自定义单元格时(单元格的高度高于默认单元格),我似乎无法给 UILabel 一个值。</p>

<p><strong>SBDownloadCell.h</strong></p>

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

@interface SBDownloadCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UILabel *title;
@property (weak, nonatomic) IBOutlet UIProgressView *progressbar;
@property (weak, nonatomic) IBOutlet UILabel *details;

- (IBAction)pause:(id)sender;

@end
</code></pre>

<p><strong>SBDownloadCell.m</strong></p>

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

@implementation SBDownloadCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = ;
    if (self) {
      // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    ;

    // Configure the view for the selected state
}

- (IBAction)pause:(id)sender {
}
@end
</code></pre>

<p><strong>SBViewController.m</strong></p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @&#34;SBDownload&#34;;

    SBDownloadCell *cell = ;

    if (cell == nil) {
      cell = [ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    SBDownload *dwnld = [ init];
    dwnld = ;

    //cell.title.text = ;
    cell.title.text = @&#34;Test&#34;;
    cell.progressbar.progress = ;
    cell.details.text = , , ];

    return cell;
}
</code></pre>

<p><strong> Storyboard</strong></p>

<p> <img src="/image/3om7L.png" alt="enter image description here"/> </p>

<p>我在 <code>cell.title.text = @"Test";</code> 之后就中断了,这仍然是我所看到的:</p>

<p> <img src="/image/tonSx.png" alt="enter image description here"/> </p>

<p>会是什么?</p>

<p><em>注意:我在 iOS7 中使用 Xcode DP-5</em></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我看到您的属性标有 <code>IBOutlet</code>,这意味着您有一个带有表格 View 单元格的 Interface Builder 文件(xib 或 Storyboard)。确保在 Interface Builder 中为表格 View 中的原型(prototype)单元格提供正确的单元格标识符。你不应该调用 <code>initWithStyle:</code>。如果在使用 <code>UITableViewController</code> 和 Storyboard时 <code>dequeueReusableCellWithIdentifier:</code> 返回 nil,这意味着设置不正确,因为 <code>dequeueReusableCellWithIdentifier:</code> 应该始终返回一个单元格(它会创建如有必要,新的)。</p>

<p>更详细地说,当使用 xib 或 Storyboard时,表格 View 单元格的 <code>initWithStyle:</code> 将永远不会被调用。加载 nib 时,正确的 init 方法是 <code>initWithCoder:</code>。</p>

<p>问题出在<code>static NSString *simpleTableIdentifier = @"SBDownload";</code>。在 Storyboard 中,您已将标识符设置为 <code>SBDownloadCell</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - CustomCell 中的标签保持为零,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18668074/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18668074/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - CustomCell 中的标签保持为零