我确实有这个工作,但我想知道为什么我认为应该工作的方法不起作用。我有一个带有 uitableviewcell 和 WirelessCell.h/.m 的 .xib 作为类。我想向单元格添加一个名为 ADVPercentProgressBar 的对象。我的 cellForRowAtIndexPath 看起来像这样:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int section = indexPath.section;
int row = indexPath.row;
if (section == 6) {
// Make dynamic rows cell
static NSString *CellIdentifier = @"wireless3";
WirelessCell *cell = (WirelessCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"WirelessCell" owner:nil options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.progressBar = [[ADVPercentProgressBar alloc] initWithFrame:CGRectMake(10, 22, 300, 28) andProgressBarColor:ADVProgressBarBlue];
[cell addSubview:cell.progressBar];
}
// Set labels here
NSDictionary *tmpDict = [[[DataSingleton sharedSingleton] sharedWirelessClients] objectAtIndex:row];
cell.labelUptime.text = [tmpDict objectForKey:@"uptime"];
[cell.progressBar setProgress:[[tmpDict objectForKey:@"signal"] intValue]*0.001];
return cell;
} else {
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
}
}
在单元格初始化期间添加 ADVPercentProgressBar 可以正常工作,但我认为我可以将 ADVPercentProgressBar 放在单元格 initWithStyle 中,如下所示:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
progressBar = [[ADVPercentProgressBar alloc] initWithFrame:CGRectMake(10, 22, 300, 28) andProgressBarColor:ADVProgressBarBlue];
[self.contentView addSubview:progressBar];
}
而不是在 ViewController 单元初始化中。但这不起作用。我只是想知道为什么,因为在我看来将对象添加到单元类初始化中似乎是合乎逻辑的。回归自我;}