Ios 将tableView样式从UITableViewStylePlain更改为UITableViewStyleGroup in subclass方法

Ios 将tableView样式从UITableViewStylePlain更改为UITableViewStyleGroup in subclass方法,ios,uitableview,tableview,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]

我有一个
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];
}

有没有更好的解决办法?我不认为删除旧的表视图,然后用板条箱装一个新的看起来很好。

您可以使用多态性

将基类中的代码更改为

- (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;
}
在你的孩子课上,你应该加上

- (UITableViewStyle)getTableStyle
{
    return UITableViewStyleGrouped;
}

它被称为“工厂方法”。

是基于ARC的项目吗?