如何为每个目标创建单独的NIB?

时间:2010-11-10 21:41:58

标签: iphone cocoa-touch design-patterns uiviewcontroller nib

我有一个iPhone应用程序找到附近的咖啡店,然后在ShopViewController中显示详细信息(地址,营业时间,WiFi可用性)。我在项目中创建了其他几个目标(例如超市,餐厅),每个目标在ShopViewController中显示的信息略有不同。在超市,我想显示是否出售酒精。在餐厅,我想显示最后的订单时间,等等。

我目前的解决方案不易维护。我有一个共享的NIB,每个可能性都有很多UILabel个。即使咖啡店没有“最后订单”信息,我使用相同的NIB和“最后订单”UILabel。我的所有目标都使用“标题”标签,但只有一个使用“酒精”标签。我只在需要的目标中使用标签。 UILabel都设置为空字符串,当我布置视图时,我忽略空标签。但是有4个目标,很难跟踪。

我的ShopViewController有一些共享功能,所以我猜我应该创建子类,比如CoffeeShopViewController,它继承自ShopViewController。然后我使用#ifdef为当前目标加载正确的NIB。然后我只能在每个目标中包含相关的子类。

这是最好的解决方案,还是有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果每个不同的接口都有一个子类,则可以让每个子类加载他们想要的精确nib,避免使用#if pre编译器语句。但是我认为,如果你保留每个视图控制器子类使用的一个nib,并且只是在这些子类中保留特定于目标的自定义代码,那么从长远来看它实际上会更简单。如果您必须对nib进行的自定义非常广泛,那么创建一堆nib只对您有用。