我有一个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];
}
有没有更好的解决方案?我不认为删除旧的表格视图,然后创建一个新的表格看起来不错。
答案 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;
}
它被称为“工厂方法”。