子单元格如何使用父亲的nib文件

时间:2014-05-06 00:07:06

标签: ios uitableview

我有一个名为fatherCell的UITableViewCell及其nib文件,为了使代码可重用,然后我通过创建没有nib文件的childCell来继承fatherCell。但是我不知道如何从childCell到fatherCell的nib建立正确的连接。 这是代码:

FatherCell和childCell

@interface FatherCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *titleLabel;
- (IBAction)cellBtnPressed:(id)sender;

@end


@implementation FatherCell

- (void)awakeFromNib
{
    [super awakeFromNib];

    self.titleLabel.text = @"fatherTitle";
}

- (IBAction)cellBtnPressed:(id)sender
{
    NSLog(@"call father method");
}

@end

@interface ChildCell : FatherCell

@end


@implementation ChildCell


- (void)awakeFromNib
{
    [super awakeFromNib];

    self.titleLabel.text = @"childTitle";

}

- (IBAction)cellBtnPressed:(id)sender
{
    NSLog(@"call child method");
}

@end

然后如何调用UITableViewController? 我使用下面的代码,但遗憾的是我无法获得预期的结果,只能调用fatherCell的方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"identifier";

    ChildCell *cell = (ChildCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell) {
        cell = [[[NSBundle mainBundle] loadNibNamed:@"FatherCell" owner:self options:nil] objectAtIndex:0];

}


return cell;

}

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

单元的对象类在nib文件(自定义类字段)中指定,因此如果使用FatherCell.xib,您将始终使用FatherCell对象。

您需要将您的FatherCell.xib复制到另一个xib文件并更改副本中的单元格类。

您可以考虑将自定义方法从单元视图类抽象到控制器类中,可能通过使用委托或块,这样您只需要一个单元类,并且可以通过提供适当的委托或处理程序块。