子类化实现UITableView委托和数据源的UIViewController:代码重用

时间:2011-01-01 03:58:00

标签: iphone uitableview ios uikit uiviewcontroller

我在viewDidLoadviewWillAppear:方法中有一些初始化代码,这些方法用于我的许多UIViewController子类(实现< UITableViewDataSource,UITableViewDelegate>):

-(void)viewDidLoad {
    [super viewDidLoad];
    self.tableView = [[UITableView alloc] initWithFrame:CGRectZero
        style:UITableViewStylePlain];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    [self.view addSubview:self.tableView];
    [self.tableView reloadData];
}

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.tableView.frame = self.view.bounds
}

我的想法是将UIViewController子类化并在子类中包含这些方法,以便不必在所有视图控制器中编写此代码。

您对此有何看法?我想知道这是否会导致保留tableView的问题。

干杯

1 个答案:

答案 0 :(得分:2)

您是否考虑过这种结构:

UIViewController - > your_First_Level_Subclass_View_Controller - > your_Second_Level_Subclass_View_Controller

在第1级中,您实现了那些可重用/ tableView相关的代码,但实际上并没有使用这个第1级控制器。然后,您将第1级子类化为创建第2级控制器,这是您将要使用的终极控制器。