如何自定义UITableview单元格作为子类

时间:2013-08-25 12:25:06

标签: iphone ios objective-c ipad tableview

我正在做报纸申请。

我希望tableview的第一个单元格由2个不同大小的视图组成,从第2个单元格开始,他们希望每个单元格中有3个相同大小的视图,并且每个单元格的视图都有动作

http://imgh.us/custom_cell.png

1 个答案:

答案 0 :(得分:0)

只需在NIB文件中设计UITableViewCell并创建相对的.h和.m文件,我们就说:

MyCell.h
MyCell.m
MyCell.xib

在MyCell.xib中放置您想要的所有子视图,并将主要单元格对象的类设置为MyCell(而不是标准UITableViewCell)。
然后,您可以在代码中设置一些IBOutlet并将它们链接到XIB中的子视图。 你也可以在自定义视图类中放置一些IBAction,虽然这是不好的做法,你应该在控制器中真正拥有你的逻辑。 MyCell.m文件应该用于初始化逻辑和动画。

最后,在你的TableViewController中将它们全部挂钩:

#import "MyCell.h"

#define k_CELL_ID @"k_CELL_ID"
#define CELL_HEIGHT 80.0f

@implementation MyTableViewController


- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *theTableView = (UITableView*)self.view;
    UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
    [theTableView registerNib:cellNib forCellReuseIdentifier:k_CELL_ID];

    theTableView.rowHeight = CELL_HEIGHT; //not sure if this is ok in iOS 7
}

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:k_CELL_ID];
    if (cell == nil)
        NSLog(@"cell is nil! WTF??");

    id someData = //retrieve customization data
    [cell setupWithCustomData:someData];

    return cell;
}

@end