0

我已经构建了一个应用程序,它可以与不同的互联网资源进行一些计算和通信。我为我的应用程序添加了三个企业客户的标签栏导航栏,唯一的变化是图片和颜色的不同。所以我创建了三个目标并适当地处理了目标成员。

到目前为止,一切都很好。但是,如果我想为客户自定义视图的整个布局,甚至是应用程序的导航怎么办?例如,下一个客户端可能会要求基于导航控制器的交互,而不是基于标签栏的导航。或者在一个视图中再添加一个标签。或者使用饼图而不是条形图来可视化某组数据。

如果您将所有不同的目标放在一个项目中,并带有所有这些 if/else if/else if/else if/... 代码块,则会导致代码非常难看。如果我有 100 个客户怎么办?

现在问题来了:在我的想象中,一个理想的概念是,如果我可以创建一个名为“ Base ”的 Xcode 项目,该项目执行所有特定领域的计算、通信等(当然)并具有基本的非品牌 UI . 这样,可以在一个中央存储库中轻松地为所有客户端维护代码。然后,对于每个客户,我创建一个全新的 Xcode 项目,导入或引用“ Base ”项目,当我单击 Build 而不进行任何自定义时,它已经为我构建了非品牌但功能齐全的应用程序。如果客户请求修改布局,我将相应的视图子类化。当再次点击 Build 按钮时,它应该会弹出“ Base ”应用程序,但某些子类视图取代了标准布局。

这种“覆盖”视觉效果的“基础”应用程序的想法能否在 Xcode 中优雅地完成?

4

2 回答 2

0

去年我就是为一个客户做的。我有一个框架应用程序,它使用与应用程序项目共享的标头。它几乎就像一个协议,应用程序“承诺”提供一些字符串、视图和图像。您可以从一个相当简单的应用程序项目开始,当您发现需要更多变体时,将代码从框架中移到应用程序中。标头是一个仅提供应用程序特定数据的类方法类的实现。

在我的情况下,我们有 7 个左右的应用程序(现在都在商店里),但在框架中没有一点了解究竟是什么应用程序正在使用它。

作为应用程序启动中的一个示例,框架可能会询问是否应该播放声音,如果需要,则请求该资源 - 与图像和其他变体相同。

于 2012-09-02T13:10:23.993 回答
0

一种方法是创建一个静态库。你可以把所有常用的东西都塞进一个静态库中,然后在其他项目中引用它。

也许大多数东西都存在于静态库中,而您的应用项目中只有一两个文件。如果应用程序之间的更改非常少(即:仅像您在帖子中提到的样式更改),这将很有效。

另一种技术是使用生成的和模板代码。这个想法是你有你的样板代码并运行一个脚本,该脚本将根据提供的颜色、徽标、字符串等设置你的项目和资源。

最后,您可能希望根据您的要求结合使用上述两种方法。

于 2012-09-02T13:10:52.460 回答