通用应用程序 - 视图控制器 - >每个设备一个?

时间:2013-04-10 22:43:19

标签: ios objective-c uiviewcontroller

所以我很快就会开始使用iOS的通用应用程序。我实际上从来没有这样做过,所以我不确定这里的最佳做法是什么,但我能够想到一些解决方案,而不是为每个设备使用单独的VC。一般问题是UI(转换,定位,动画等),因为它随每个设备而变化。我迫切希望避免重复的逻辑代码或为逻辑创建一些容器,因为VC是逻辑的地方。所以这是我的想法:

  • 委托 - 我会为每个VC创建协议,然后是2个实现此协议的类(包含特定于设备的逻辑),在VC中我会根据当前正在运行的设备应用程序将委托设置为其中一个类
  • 阻止 - 非常像代表,但更麻烦
  • 继承 - 与委托非常相似,但代替协议和2个委托类和一个VC,将有3个VC - 1. base 2. iphone 3. ipad - 2和3将继承自1并实现/覆盖方法特定到设备

这些是我能想到的3,即使它们基本相同但实现不同。我个人喜欢代表,但我是新手,我正在征求你的意见。我正在以正确的方式思考这个问题,还是有其他方法或最佳实践?

2 个答案:

答案 0 :(得分:2)

我会为适用于iPad和iPhone的所有代码创建一个基本视图控制器,然后为从基本视图控制器继承的每个代码创建一个单独的视图控制器。这样,您只需覆盖包含设备特定代码的方法,通常是与UI相关的代码。

答案 1 :(得分:0)

在大多数情况下,您并不需要创建不同的视图控制器。

如果您使用故事板,则可以为iPhone和iPad使用的常用视图控制器创建故事板,并为iPhone和iPad分别添加两个故事板。然后使用IBOutlets在代码中引用。

通常你在iPad版本中有更多的插座,因为屏幕更大,但代码应该仍然适用于iPhone版本。

如果在你的情况下拆分故事板是不够的,我建议在VC类的不同文件中使用两个类别。然后将公共代码保存在普通文件中,并在类别中添加专用功能代码。