如何在Interface Builder中使用可更改的标签制作可重复使用的TableViewCell?
这甚至可能吗?从我的理解苹果最近在Interface Builder中给定制的TableViewCell有些喜欢,所以这应该是可能的吗?
聚苯乙烯。我知道有关IB中TableViewCell的答案有很多问题,但我找不到任何使标签有用的人。
答案 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。
之后,您可以直接在IB中连接您的房产
现在,您可以在表格视图数据源中访问此属性
#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;
}
使用标签很容易出错,如果使用很多标签,可能会很快变成乱七八糟的东西。