- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经完成了下面的教程并且效果很好。我的问题是如何向原型(prototype)单元添加两个以上的标准单元?
http://thedarkdev.blogspot.co.uk/2013/09/web-service-apps-in-ios7-json-with.html
cell.textLabel.text = "标题文字"; cell.detailTextLabel.text = "详细文本"
我想添加另外 4 个标签,并想使用 Storyboard 来布置它们。
有什么办法吗?
最佳答案
您可以使用自定义单元格类型,并且可以添加任意数量的标签:
创建一个您将用于此单元格的空 UITableViewCell
子类。请注意,此子类在其 @implementation
中不需要任何代码。我们只会为其属性添加 socket ,这些 socket 将显示在其 @interface
中,但 Storyboard消除了为单元格本身编写任何代码的需要。
返回 Interface Builder,转到 Storyboard中的 TableView 并确保它有一个单元格原型(prototype)。 (如果它没有从对象库中拖一个到 TableView 。)
在右侧的“身份”检查器面板上,将单元格原型(prototype)的基类设置为您的 UITableViewCell
子类作为单元格原型(prototype)的“基类”;
在 Storyboard的单元格“属性”检查器中,将单元格“ Storyboard标识符”设置为您将在第 5 步中引用的内容(我在这里使用了 CustomCell
);
将单元格“样式”设置为“自定义”而不是“基本”或“详细”:
将标签添加到单元格。
我在此处为单个原型(prototype)单元格添加了标签:
使用“助理编辑器”将您的代码与 Storyboard同时显示。选择您添加到场景中的标签之一,将下面的代码更改为您在第 1 步中创建的 UITableViewCell
子类,您现在可以control-drag从标签创建标签到单元格的自定义子类的 IBOutlet
引用:
顺便说一下,我建议不要使用 textLabel
或 detailTextLabel
的 IBOutlet
名称(它们不仅过于通用,而且可能会与标准单元格布局中出现的标签混淆)。
现在您的 tableview Controller 可以引用这个子类:
- (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
子类,您的 cellForRowAtIndexPath
非常简单,只需引用您在 Interface Builder 中连接的 IBOutlet
引用即可。
关于ios - 如何向原型(prototype)单元格添加两个以上的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746279/
我是一名优秀的程序员,十分优秀!