通用应用程序中的 UISplitViewController 子类

Posted

技术标签:

【中文标题】通用应用程序中的 UISplitViewController 子类【英文标题】:UISplitViewController subclass in a universal app 【发布时间】:2010-08-06 12:29:19 【问题描述】:

我正在为 iPad 构建一个使用 UISplitViewController 的通用应用程序,并且应该也可以在任何 3.0 设备上运行,例如第一代 iPhone/iPod touch。问题是,尽管当应用程序在 iPhone 上运行时我实际上并没有创建任何 UISplitViewController 实例,但我仍然感到害怕

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/.....
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

尝试在第一代 iPod touch 上运行时出现控制台错误。不过,在 ios 4 设备上一切正常。我猜问题是我将 UISplitViewController 子类化了,当从 .h 文件中读取“@interface SplitControl: UISplitViewController ”行时它会窒息。

我对它进行子类化的唯一原因是重写 shouldAutorotateToInterfaceOrientation 方法。我在没有 IB 的情况下以编程方式完成我的整个应用程序。如果我使用 IB 创建 SplitViewController 并告诉它支持所有方向,它会有帮助吗?

有没有办法在不继承控制器的情况下覆盖 shouldAutorotateToInterfaceOrientation ?还有其他方法可以从 3.2 之前的设备中隐藏 UISplitViewController 吗?

【问题讨论】:

我是针对 Base SDK 4.0 构建的,所以像 '#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200' 这样的宏不会有帮助。我需要在运行时解决这个问题,而不是编译时。 【参考方案1】:

你需要做的就是弱链接 UIKit.framework。在目标的常规设置中,在“链接库”列表中,将 UIKit.framework 的类型更改为“弱”而不是“必需”。

【讨论】:

以上是关于通用应用程序中的 UISplitViewController 子类的主要内容,如果未能解决你的问题,请参考以下文章

通用应用程序中的 UISplitViewController 子类

Windows Phone 10 通用应用程序中的 SupressSystemOverlays

iOS 11.2 中的通用链接中断

iTunes Connect:如何判断应用商店中的通用应用购买使用的是啥设备?

了解通用链接委托方法及其在 iOS 中的用途

graphQL 变异参数中的通用对象