我已经阅读了下面的教程,它运行正常。我的问题是如何在原型单元格中添加两个以上的标准单元?
http://thedarkdev.blogspot.co.uk/2013/09/web-service-apps-in-ios7-json-with.html
cell.textLabel.text =" Title Text&#34 ;; cell.detailTextLabel.text ="详细文本"
我想添加另外4个标签,并希望使用故事板进行布局。
任何想法如何做到这一点?
答案 0 :(得分:13)
您可以使用自定义单元格类型,并且您可以根据需要添加任意数量的标签:
创建一个空的UITableViewCell
子类,您将用于此单元格。注意,这个子类在@implementation
内不需要任何代码。我们只会为其属性添加插件,这些插件会显示在其@interface
中,但故事板无需为单元编写任何代码本身。
返回Interface Builder,转到故事板中的表格视图,确保它有一个单元格原型。 (如果它没有将对象库中的一个拖到表视图上。)
关于"身份"在右侧的检查器面板中,将单元原型的基类设置为您的UITableViewCell
子类作为单元原型"基类&#34 ;;
在故事板"属性"单元格的检查员,设置单元格"故事板标识符"你将在第5步中引用的内容(我在这里使用了CustomCell
);
设置单元格" Style"到"定制"而不是" Basic"或"详细":
将标签添加到单元格中。
我已将标签添加到单个原型单元格中:
使用"助理编辑器"与故事板同时显示您的代码。选择您已添加到场景中的其中一个标签,将下面的代码更改为您在步骤1中创建的UITableViewCell
子类,现在可以 control -drag from用于为单元格自定义子类的标签创建IBOutlet
引用的标签:
顺便说一下,我建议不要使用IBOutlet
或textLabel
的{{1}}个名称(不仅它们太通用了,而且可能会与标签混淆出现在标准单元格布局中。)
现在你的tableview控制器可以引用这个子类:
detailTextLabel
所以虽然这里有几个步骤,但最终的结果是你可以设计你想要的任何单元格布局,并且通过这个非常简单的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell"; // make sure this matches the "Identifier" in the storyboard for that prototype cell
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
// retrieve the model data to be shown in this cell
// now fill in the four labels:
cell.firstNameLabel.text = ...;
cell.lastNameLabel.text = ...;
cell.emailLabel.text = ...;
cell.telephoneLabel.text = ...;
return cell;
}
子类,你的UITableViewCell
是令人难以置信的简单,只需引用您在Interface Builder中连接的cellForRowAtIndexPath
引用。