我正在关注一个简单的iOS 7教程并在tableview中使用标准字幕单元格类型,并为Title和Subtitle获得了两个标签。标签为:textLabel
和detailTextLabel
我现在想要自定义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;
}
我这样做错了吗?
答案 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
方法中使用它。