自定义UITableViewCell问题

时间:2011-08-19 02:42:02

标签: objective-c cocoa-touch

我已使用以下说明创建了自定义单元格类:http://www.bdunagan.com/2009/06/28/custom-uitableviewcell-from-a-xib-in-interface-builder/

现在,我有两个视图控制器:MyPostsViewControllerCustomCellViewController。自定义单元格只是一个UITableViewCell的单元格,并且已声明并连接了两个标签。 MyPostsViewController是使用这些自定义单元格的UITableView。但是,我不确定如何从CustomCellViewController访问MyPostsViewController的两个标签。我想从MyPostsViewController访问它们,因为这是cellForRowAtIndexPath方法所在的位置以及我想要设置标签值的位置。我该怎么做?

3 个答案:

答案 0 :(得分:1)

如果您按照发布的说明操作,则不需要CustomCellViewController。只需在MyPostsViewController

中加载NIB中的单元格即可

要访问您单元格的各个子视图,请为每个子视图分别设置tag,然后使用[cell viewWithTag:42]检索它们。

答案 1 :(得分:1)

您应该在cellForRowAtIndexPath:中自定义(设置标签的值)。为此,您可以在IB本身中为标签设置标签(在“属性”检查器中查找标签字段)。假设你为Label1& amp设置1 2为Label2。然后,您的代码看起来像(从您发布的链接复制) -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BDCustomCell"];
    if (cell == nil) {
        // Load the top-level objects from the custom cell XIB.
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"BDCustomCell" owner:self options:nil];
        // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain).
        cell = [topLevelObjects objectAtIndex:0];
    }

//customize the cell here
UILabel* label 1 = [cell viewWithTag:1];
label1.text = @"my text";

//similarly label 2

    return cell;
}

HTH,

阿克沙伊

答案 2 :(得分:1)

我认为最简单的方法是在自定义UITableViewCell子类上定义IBOutlets。然后,在设计XIB时,按住CTRL键并单击自定义单元格。你应该看到那里的插座。拖放将您的插座连接到您的标签,就像您通常使用视图一样。最后,在您的cellForRowAtIndexPath方法中访问这些IBOutlets。