iOS 7:Tableview中的自定义样式单元格:如何引用标签?

时间:2014-03-17 17:04:30

标签: ios iphone objective-c uitableview

我正在关注一个简​​单的iOS 7教程并在tableview中使用标准字幕单元格类型,并为Title和Subtitle获得了两个标签。标签为:textLabeldetailTextLabel

我现在想要自定义tableView中的单元格,所以我将样式切换为Custom,并在storyboard上创建了两个标签。然后我将IBOutlets链接到我的.m文件的接口部分中的那些标签。它看起来像这样:

@interface MasterViewController ()

@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@property (weak, nonatomic) IBOutlet UILabel *detailTextLabel;

@end

这就是我的代码渲染我的细胞的样子,我认为它是相当标准的。

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

NSDictionary *key = [items objectAtIndex:indexPath.row];
NSString *name = [key objectForKey:@"name"];
NSString *type = [key objectForKey:@"type"];

cell.textLabel.text = name;
cell.detailTextLabel.text = [NSString stringWithFormat:@"Type : %@", type];    
return cell;
}

我这样做错了吗?

2 个答案:

答案 0 :(得分:3)

通过在VC(您的代理人)中创建IBOutlet,您尝试链接这些UILabel的单个实例。

创建一个新的UITableViewCell子类,并将原型单元格设置为IB中的该类。然后将您的出口拖到该子类。这是使用可以使用的插座的唯一方法。

不幸的是我有点匆忙,否则我会发一个完整的答案但是这里有怎么做:

1.使用File->New->File...;

2.选择Cocoa Touch,然后选择Objective-C Class;

3.输入类名并确保子类的类型为UITableViewCell;

4.单击“下一步”,在您选择的项目文件夹中创建类。

5.转到您的故事板,点击原型单元格;

6.在Utilities(右侧)窗格中,单击Identity Inspector(第3个图标),然后在顶部的类条目中输入新类的名称。

7.像以前一样将出口拖到.m文件中!

另外,使用Storyboards和Prototype单元格意味着您的if (cell == nil) { ...}部分现在已经冗余,并且可以在故事板保证返回单元格时删除。

答案 1 :(得分:0)

您应该为不同于标准的自定义标签指定名称。 此外,您需要继承UITableViewCell并在cellForRowAtIndexPath方法中使用它。