Interface Builder中可重复使用的TableViewCell具有可变标签?

时间:2011-08-29 11:04:15

标签: iphone interface-builder cell tableview tableviewcell

如何在Interface Builder中使用可更改的标签制作可重复使用的TableViewCell?

这甚至可能吗?从我的理解苹果最近在Interface Builder中给定制的TableViewCell有些喜欢,所以这应该是可能的吗?

聚苯乙烯。我知道有关IB中TableViewCell的答案有很多问题,但我找不到任何使标签有用的人。

2 个答案:

答案 0 :(得分:1)

您可以更改正在重复使用的单元格中的任何内容。要自定义您在IB中创建的标签,您应该在IB本身及其中设置标签。使用相同的标签获取标签。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    MyCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil)
    {
        cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }


    // Configure the cell.
    //Do anything here with the labels. Even add or remove them.
    (UILabel*) label1 = (UILabel*)[cell viewWithTag:1];
    return cell;
}

HTH,

阿克沙伊

答案 1 :(得分:0)

我曾经以与接受的答案相同的方式做到这一点,但我总是觉得使用像我这样的标签使用"去"在帕斯卡尔。感觉很脏。但也许它只是我,标签工作得很好。

虽然有另一种方式。子类化UITableViewCell,创建IBOutlet属性,在IB中连接,并在cellForRowAtIndexPath:代码中引用您的属性。像这样:

interface MyCustomCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *myAwesomeLabel;

@end

不要忘记将你的小学课程设置为IB中的MyCustomCell。

enter image description here

之后,您可以直接在IB中连接您的房产

enter image description here

现在,您可以在表格视图数据源中访问此属性

#import "MyCustomCell.h"


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCell"];

    if (cell) {
        cell.myAwesomeLabel.text = @"Hello, World!";
    }

    return cell;

}

使用标签很容易出错,如果使用很多标签,可能会很快变成乱七八糟的东西。