通用应用程序中的 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