在故事板中连接Cell Prototype的插座

时间:2012-04-16 14:43:27

标签: ios uitableview storyboard iboutlet

我是故事板的新手,因此我遇到了一些困难......

我已经创建了一个TableViewController,我想自定义Cell Prototype。在Cell Prototype中,我添加了几个标签,我想用自己的类定制,它继承自UITableViewCell(AreaListCell)。 在故事板中,对于Cell Prototype,我已将Custom Class配置为“AreaListCell”,其样式为“Custom”。

在故事板中,当我选择Cell Prototype然后选择助手时,助手会显示我的实现UITableViewController(AreasTableViewController)的类而不是 我的“AreaListCell”类。

结果是我可以创建插座(使用Ctrl + Drag从Cell Prototype的标签)到AreasTableViewController类,但不能创建到AreaListCell类! 知道如何将Cell Prototype与我的AreaListCell类连接起来吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:128)

更新:从Xcode 4.6(可能更早)开始,您现在可以通过控制拖动来创建插座! - 这必须在接口部分或类扩展中完成(默认情况下,新的单元子类不存在类扩展。感谢Steve Haley指出这一点。

您无法通过拖动助手编辑器中的代码块来自动连接和创建插座,这很差,但您可以手动创建插座并连接它们。

在您的单元子类接口中:

@interface CustomCell : UITableViewCell

@property (nonatomic) IBOutlet UILabel* customLabel;

@end

在实现中正常合成。

在故事板中,选择单元格并转到连接检查器,您将看到新的插座。从那里拖动到原型中的相关元素:

enter image description here

现在可以在cell.customLabel方法中以cellForRowAtIndexPath:访问此内容。

答案 1 :(得分:21)

是的,您无法使用ctrl + drag方法连接自定义原型单元格内的视图。而是使用视图的tag属性,然后在构建单元格时使用标签拉出标签。

下面:

//Let's assume you have 3 labels.  One for a name, One for a count, One for a detail
//In your storyboard give the name label tag=1, count tag=2, and detail tag=3


- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:@"Prototype Cell"];

    UILabel *nameLabel = (UILabel *)[theCell viewWithTag:1];
    UILabel *countLabel = (UILabel *)[theCell viewWithTag:2];
    UILabel *detailLabel = (UILabel *)[theCell viewWithTag:3];

    nameLabel.text = @"name";
    countLabel.text = @"count";
    detailLabel.text = @"details";

    return theCell;
}

您还可以在自定义单元格代码中将标签设置为属性,然后在初始化单元格时使用viewWithTag调用将标签属性分配给您在故事板上创建的标签。

我花了几天时间才意识到我无法从自定义单元格内部进行ctrl +拖动来创建IBOutlet。

祝你好运!

编辑:您可以为自定义单元格内的标签创建IBOutlets并创建链接programatticaly,而不是通过ctrl + drag方法。

编辑2:我完全错了,你可以按住Ctrl +拖动。请参阅此问题的第二个答案。这很棘手,但效果很好。

答案 2 :(得分:0)

Swift 3

//如果你的图像在服务器上,我们正在使用它。

//我们从网址获取图片。

//您可以从Xcode设置图像。

  1. 图片的网址是数组名称=缩略图,即self.thumbnail [indexPath.row]
  2. 在UITableviewCell上将imageView放在单元格
  3. 选择UIimageView从故事板中为其分配标签。

    let pictureURL = URL(string: self.thumbnail[indexPath.row])!
    let pictureData = NSData(contentsOf: pictureURL as URL)
    let catPicture = UIImage(data: pictureData as! Data)
    var imageV = UIImageView()
    imageV = cell?.viewWithTag(1) as! UIImageView
    imageV.image = catPicture