使用 xib 而不是情节提要的 iOS 应用程序扩展

Posted

技术标签:

【中文标题】使用 xib 而不是情节提要的 iOS 应用程序扩展【英文标题】:iOS App Extension with xib instead of storyboard 【发布时间】:2014-07-26 01:27:10 【问题描述】:

我正在为 Today 视图编写一个 ios 8 App Extension(小部件)。 xcode 中的默认模板带有故事板。如何使用 xib 文件而不是情节提要?

documentation 说这是可能的,但我似乎无法弄清楚如何更改 info.plist 文件以加载 xib。

【问题讨论】:

【参考方案1】:

您需要做的就是添加“NSExtensionPrincipalClass”和您想要的类名。

【讨论】:

【参考方案2】:

正如我最近发现的困难方式 - 请注意“NSExtensionPrincipalClass”必须直接位于“NSExtension”键下。例如类ShareViewController:

<key>NSExtension</key>
<dict>
    <key>NSExtensionPrincipalClass</key>
    <string>ShareViewController</string>
    ...
</dict>

【讨论】:

【参考方案3】:

默认情况下,Today 模板提供以下 Info.plist 键和值(此处针对 OS X 目标显示):

<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.widget-extension</string>
    <key>NSExtensionPrincipalClass</key>
    <string>TodayViewController</string>
</dict>

如果您使用自定义视图控制器子类,请使用自定义类名替换 NSExtensionPrincipalClass 键的 TodayViewController 值。

iOS。如果您不想使用模板提供的情节提要文件,请删除 NSExtensionMainStoryboard 键并添加 NSExtensionPrincipalClass 键,使用您的视图控制器的名称作为值。

创建 Today 小部件所做的大部分工作都涉及设计 UI 和实现一个视图控制器子类来执行您的自定义功能。

BY APPLE GUIDELINES:-->click to view

【讨论】:

以上是关于使用 xib 而不是情节提要的 iOS 应用程序扩展的主要内容,如果未能解决你的问题,请参考以下文章

从 xib 而不是主场景切换到情节提要中的场景

在 ios 中从 xib 移动到情节提要

是否可以使用 xib 或情节提要对 UITableViewController 进行子类化?

iOS - 无法让 @IBDesignable .xib 文件显示在情节提要或模拟器上

使用情节提要时我们会经常发生冲突吗?

当您在情节提要中“因特性而异”时,为啥此自动布局扩展会失败?