gpt4 book ai didi

iphone - CustomCell 中的标签保持为零

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:45:53 26 4
gpt4 key购买 nike

我创建了一个带有 UILabel 的自定义 UITableViewCell。

在 cellForRowAtIndexPath 方法中,我初始化自定义单元格并为 UILabel 赋值。

加载自定义单元格时(单元格的高度高于默认单元格),我似乎无法给 UILabel 赋值。

SBDownloadCell.h

#import <UIKit/UIKit.h>

@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

SBDownloadCell.m

#import "SBDownloadCell.h"

@implementation SBDownloadCell

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

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}

- (IBAction)pause:(id)sender {
}
@end

SBViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SBDownload";

SBDownloadCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

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

SBDownload *dwnld = [[SBDownload alloc] init];
dwnld = [SBdownloads objectAtIndex:indexPath.row];

//cell.title.text = [dwnld name];
cell.title.text = @"Test";
cell.progressbar.progress = [dwnld percentDone];
cell.details.text = [NSString stringWithFormat:@"%f MB of %f MB completed, %@", [dwnld completed], [dwnld length], [dwnld eta]];

return cell;
}

Storyboard

enter image description here

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

enter image description here

它会是什么?

注意:我在 iOS7 上使用 Xcode DP-5

最佳答案

我看到您的属性标有 IBOutlet,这意味着您有一个带有表格 View 单元格的 Interface Builder 文件(xib 或 Storyboard)。确保在 Interface Builder 中为 TableView 中的原型(prototype)单元格提供正确的单元格标识符。您不应该调用 initWithStyle:。如果 dequeueReusableCellWithIdentifier: 在使用 UITableViewController 和 Storyboard时返回 nil,这意味着设置不正确,因为 dequeueReusableCellWithIdentifier: 应该总是返回一个单元格(它创建如果必须的话,新的)。

进一步详细说明,当使用 xib 或 Storyboard时, TableView 单元格的 initWithStyle: 将永远不会被调用。加载 nib 时,正确的初始化方法是 initWithCoder:

问题出在 static NSString *simpleTableIdentifier = @"SBDownload"; 中。在您的 Storyboard中,您已将标识符设置为 SBDownloadCell

关于iphone - CustomCell 中的标签保持为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668074/

26 4 0