子类化UIViewController的子类是一个好习惯吗?

时间:2012-10-16 04:45:47

标签: objective-c uilabel subclassing

假设你有一个2子类的tableView控制器。

它们在标题底部的顶部都有相同的页眉和页脚视图。他们都实现了拉动刷新。

它们都有一些共同特征。

唯一不同的是一个用于显示整个业务,另一个用于仅显示您收藏的商家。

看起来他们都需要拥有相同的父类,并且在子类上解析了不同的父类。不管怎样,差异很小。

我认为父母拥有自己的XIB,孩子们拥有自己的XIB。

嗯......怎么会有效?除容器UIViewController外,每个控制器都应查看内容的完整视图。那么我们应该展示哪种观点?孩子还是超级?子视图是否应该添加超类子视图?

有人曾尝试过吗?

网络上使用此方法的任何代码示例?

1 个答案:

答案 0 :(得分:1)

听起来,基于您解释的业务逻辑,除了您要呈现的数据列表之外,一切都是共同的。您可以在UITableViewController子类上公开属性,以设置tableview呈现的业务对象:

@interface JTBusinessesTableViewController : UITableViewController

@property (nonatomic, strong) NSArray *businesses;

@end

实例化此类的代码将设置业务对象:

JTBusinessesTableViewController *businessListings; //Instantiate from XIB or Storyboard
businessListings.businesses = [self bookmarkedBusinesses];

[self.navigationController pushViewController:businessListings animated:YES]

显示所有商家的代码不会有太大差异:

JTBusinessesTableViewController *businessListings; //Instantiate from XIB or Storyboard
businessListings.businesses = [self allBusinesses]; //  Here we assign all of them

[self.navigationController pushViewController:businessListings animated:YES]

您只是选择性地为此视图控制器提供要显示的业务对象。