我创建了一个自定义 UITableViewCell,其中包含一个 UILabel。
在 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)pauseid)sender;
@end
SBDownloadCell.m
#import "SBDownloadCell.h"
@implementation SBDownloadCell
- (id)initWithStyleUITableViewCellStyle)style reuseIdentifierNSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelectedBOOL)selected animatedBOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (IBAction)pauseid)sender {
}
@end
SBViewController.m
- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)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
我在 cell.title.text = @"Test"; 之后就中断了,这仍然是我所看到的:
会是什么?
注意:我在 iOS7 中使用 Xcode DP-5
Best Answer-推荐答案 strong>
我看到您的属性标有 IBOutlet ,这意味着您有一个带有表格 View 单元格的 Interface Builder 文件(xib 或 Storyboard)。确保在 Interface Builder 中为表格 View 中的原型(prototype)单元格提供正确的单元格标识符。你不应该调用 initWithStyle: 。如果在使用 UITableViewController 和 Storyboard时 dequeueReusableCellWithIdentifier: 返回 nil,这意味着设置不正确,因为 dequeueReusableCellWithIdentifier: 应该始终返回一个单元格(它会创建如有必要,新的)。
更详细地说,当使用 xib 或 Storyboard时,表格 View 单元格的 initWithStyle: 将永远不会被调用。加载 nib 时,正确的 init 方法是 initWithCoder: 。
问题出在static NSString *simpleTableIdentifier = @"SBDownload"; 。在 Storyboard 中,您已将标识符设置为 SBDownloadCell 。
关于iphone - CustomCell 中的标签保持为零,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18668074/
|