iphone - 如何加入 iPad 和 iPhone 应用程序?

标签 iphone objective-c ios ipad

我有一个 iPad 应用程序和一个 iPhone 应用程序。

我想加入他们,这样如果加入应用程序将在 iPad 上运行,它将有一个行为,如果它在 iPhone 上运行,它将有另一个行为。

我想到的第一件事是制作不同的 View 并为 iphone/ipad 选择 View ,但我还有一些特定于 ipad 和 iphone 的东西(例如:splitViewController),所以仅选择不同的 View 无济于事.

加入 2 个这样的应用程序的最佳方式是什么?我想要一种比做类似的事情更优雅的方法

if(isIPhone)
{
// code for iphone

}
else if(isIPad)
{
// code for iPad

}

每次我发现这两个版本之间存在差异。谢谢!

最佳答案

我相信 WWDC 2010 session 视频中包含的 iPad 开发概述正好涵盖了这个问题。

根据 Apple 的指导,这是我采用的方法:

您可以设置特定于平台的主界面 nib,这意味着您也可以设置特定于平台的app delegates。因此,您可能有一个父类(super class)应用委托(delegate)来完成所有应用设置,然后是子类以部署 iPad UI 或 iPhone UI。

这很有用,因为在 iPad 上, Split View需要交通警察来确定内容的位置。现在你有一个地方可以独立于 View Controller 放置该逻辑:在应用程序委托(delegate)中。

从那里,只要有一个 View Controller 对两个平台都是通用的,但每个平台都有一些特定的行为,就会创建一个 View Controller 父类(super class)来处理所有通用功能。然后,特定于 iPad 的子类可能会覆盖 -refreshView: 方法来执行一些额外的动画,或者添加属性和委托(delegate)方法以支持 Split View。

虽然您绝对可以使用 if else 测试 iPad 特性,但是当您添加仅在一个平台上重要的委托(delegate)方法时,这在 View Controller 中会变得真的粗糙.通过这种方式拆分,您将获得更易于维护和阅读的代码。这可能意味着对现有项目进行大量重构。不过,就我而言,它只花了大约一个小时,结果是一个非常整洁的应用程序,很容易投入使用并针对一个或两个平台进行修改。

关于iphone - 如何加入 iPad 和 iPhone 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6912878/

相关文章:

iphone - UIImagePickerController 检查用户是否编辑了图像

iphone - 如何在我的实际 iPad 上测试我的 iPad 应用程序?

objective-c - Objective C 静态类变量

ios - 带有核心数据的通用主从应用程序和 iphone Storyboard的选项卡 Controller 获取无法识别的选择器发送到实例错误

ios - 动态创建的字段和按钮在 iOS 中不可点击

iphone - 在 iOS 6 中捕捉全景图的库

iphone - 无论 ViewController 用户处于哪个位置,都可以读取/写入 NSStream

objective-c - 属性不使用点表示法?

ios - 如何处理 backBarButtonItem 的长标题字符串?

ios - 滑动手势在 UITableViewCell 中不起作用