我有一个没有情节提要的项目。我已经在AppDelegate
中设置了根视图控制器。现在,我添加了今天的扩展。我得到了一个带有根视图控制器MainInterface.storyboard
的新情节提要TodayViewController
。如何删除MainInterface.storyboard
并以编程方式设置根视图控制器?
答案 0 :(得分:1)
Xcode 11.0
从扩展程序中打开 Info.plist 并更改
<dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
...
</dict>
收件人:
<dict>
<key>NSExtensionPrincipalClass</key>
<string>NameOfYourExtension.NameOfYourViewController</string>
...
</dict>
删除 MainInterface.storyboard ,它应该可以正常工作。
答案 1 :(得分:0)
在您的应用程序委托didFinishLaunchingWithOptions中,获取根视图控制器并推送视图控制器,在下面,我将HomeViewController设置为替换它
let rootViewController = self.window!.rootViewController as! UINavigationController
let vc = HomeViewController.init(nibName: "HomeViewController", bundle: nil)
rootViewController.pushViewController(vc, animated: false)
答案 2 :(得分:0)
使用URL方案实现您的目标,请参见以下代码。
在 TodayViewController (今天的扩展名为swift文件)中写入以下代码
@IBAction func buttonTapped(_ sender: UIButton) {
let url = URL(string: "MyAppTodayExtension://")!
self.extensionContext?.open(url, completionHandler: { (success) in
if (!success) {
print("error: failed to open app from Today Extension")
}
})
}
在您的 info.plist 文件中添加URL方案
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>MyAppTodayExtension</string>
</array>
</dict>
</array>
点击今天的分机号,然后在 AppDelegate.swift 文件中获得以下呼叫方法。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
//Write code here for navigating to a specific controller OR set root view controller
return true
}