Why does the label never show up in my UITableViewCell subclass?
示例项目:http://cl.ly/283o3a0x2l3h
我试图创建一个包含一些视图的自定义单元格,因此我将
但是,每当我运行应用程序时,它都不会在单元格上显示标签。实际上,UITableViewCell子类的init方法永远不会结束调用。
这在
1 | cell.postTitle.text = @"testing"; |
然而,uiTableViewCell子类中的EDOCX1[4]从未被调用过,我也不知道为什么。值得注意的是,它在Interface Builder中做了一些工作,但仅仅是使用单元格设置的UITableView被视为UITableViewCell的子类。
有人能看看告诉我我做错了什么吗?
如果您要以编程方式进行,请使用
因此,您可以享受
当在运行时加载自定义
1 2 3 4 5 6 7 8 9 | - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self == nil) return nil; // Initialization code goes here... return self; } |
有关如何从NIB文件和故事板反序列化对象的详细信息,请参阅《存档和序列化编程指南》。
下面是一个如何从NIB文件加载自定义单元的示例。自定义TableView单元(FileTableViewCell)是在ib中创建的,它包含两个标签、一个进度条、一个按钮,有时还会向AccessoryView添加活动指示器。因此,尝试用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *simpleTableIdentifier = @"FileTableViewCell"; //LOG(@" tableView:cellForRowAtIndexPath:"); FileTableViewCell *cell = (FileTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { //LOG(@" cell is nil so create one"); NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FileTableViewCell" owner:self options:nil]; //FLOG(@" nib is %@", nib); cell = [nib objectAtIndex:0]; } // Configure the cell. FileRepresentation* fileRepresentation = _fileList[indexPath.row]; cell.textLabel.text = [self userFilename:[fileRepresentation.fileName stringByDeletingPathExtension]]; cell.detailTextLabel.text = [fileRepresentation modifiedDate]; float percentage = [fileRepresentation.percentDownloaded intValue] / 100.0; int ds = [self downloadStatus:fileRepresentation]; if (ds == 1) { //FLOG(@" download process for file is %f", percentage); cell.textLabel.textColor = [UIColor grayColor]; cell.accessoryType = UITableViewCellAccessoryNone; UIActivityIndicatorView *progressView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; cell.accessoryView = progressView; [cell.progressIndicator setHidden:NO]; [cell.progressIndicator setProgress:percentage]; [progressView startAnimating]; } if (ds == 2) { //FLOG(@" download process for file is %f", percentage); cell.textLabel.textColor = [UIColor grayColor]; cell.accessoryType = UITableViewCellAccessoryNone; UIActivityIndicatorView *progressView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; cell.accessoryView = progressView; [cell.progressIndicator setHidden:NO]; [cell.progressIndicator setProgress:percentage]; [progressView startAnimating]; } if (ds == 3) { cell.textLabel.textColor = [UIColor blackColor]; cell.accessoryView=nil; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; [cell.progressIndicator setHidden:YES]; } cell.imageView.image = [UIImage imageNamed:_fileImageName]; return cell; } |