将子视图样式从UITableViewStylePlain更改为子类方法中的UITableViewStyleGrouped

时间:2014-02-25 08:03:26

标签: ios uitableview tableview

我有一个ViewControllerA包含一个带UITableViewStylePlain样式的tableView,如下所示:

- (void)loadView{
    [super loadView];

    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    [self.view addSubview:self.tableView];
}

现在,我有一个ViewControllerSubA子类ViewControllerA,大多数逻辑与ViewControllerA相同,但tableView的样式应为UITableViewStyleGrouped。我要做的是用UITableViewStyleGrouped样式创建一个新的tableView,代码如下:

- (void)loadView
{
    [super loadView];
    [self.tableView removeFromSuperview];
    self.tableView = nil;

    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    [self.view addSubview:self.tableView];
}

有没有更好的解决方案?我不认为删除旧的表格视图,然后创建一个新的表格看起来不错。

1 个答案:

答案 0 :(得分:1)

你可以使用多态!

将Base类中的代码更改为

- (void)loadView
{
    [super loadView];
//..... additional code here
    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:[self getTableStyle]];
    [self.view addSubview:self.tableView];
}

- (UITableViewStyle)getTableStyle
{
    return UITableViewStylePlain;
}

在您的Child课程中,您应该添加

- (UITableViewStyle)getTableStyle
{
    return UITableViewStyleGrouped;
}

它被称为“工厂方法”。