【问题标题】:Created custom UITableViewCell - Can I link the design up to a XIB file?创建自定义 UITableViewCell - 我可以将设计链接到 XIB 文件吗?
【发布时间】:2025-12-01 22:50:01
【问题描述】:

我有一个继承自 UITableViewCell 的自定义类。我知道如何使用 layoutSubviews 动态地将项目添加到自定义单元格,但是我有一个相当复杂的单元格,我想从 Interface Builder 和一个 XIB 文件中设计它。

有没有办法做到这一点?如果是这样,怎么做?请记住,我是 XCode 的新手,所以您提供的细节越多越好。 :)

提前感谢您的帮助。

【问题讨论】:

    标签: ios4 uitableview xcode4


    【解决方案1】:

    在您的 UITableViewController 子类中,为您的自定义单元格类添加一个 IBOutlet:

    @property(nonatomic,retain)IBOutlet UITableViewCell *customCell;
    

    然后,在您的自定义单元格 xib 中,将 File's Owner 设置为您的 UITableViewController 子类,并将最外层视图分配给 File's Owner 上的 IBOutlet。对于要以编程方式访问的每个子视图,为其tag 属性分配一个唯一值。假设您的自定义单元格有 3 个标签,您分别标记了 1、2 和 3。

    最后,在您的cellForRowAtIndexPath 方法中,使用loadNibNamed 方法将笔尖加载到插座中。请参阅API docs 了解其工作原理。

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        // assuming nib is MyCustomCell.xib
        [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
    
        // assign IBOutlet to cell
        cell = customCell;
    
        // clear IBOutlet
        self.customCell = nil;
    }
    

    现在您可以使用单元格上的viewWithTag 方法访问自定义单元格中的标记视图:

    UILabel *label1 = (UILabel *)[cell viewWithTag:1];
    label1.text = @"foo";
    
    UILabel *label2 = (UILabel *)[cell viewWithTag:2];
    label2.text = @"bar";
    
    UILabel *label3 = (UILabel *)[cell viewWithTag:3];
    label3.text = @"baz";
    

    【讨论】:

      最近更新 更多