在我的xcode 9.2 swift 4项目中,我有两个类,一个是AppDelegate
,我处理所有应用程序特定的功能(如订阅和接收推送通知)和ViewController(Main.storyboard id is ShitstuffController
)我处理我的WKWebView
我想要做的是,当应用程序处于非活动状态或后台时
并且用户已收到并点击本地通知,在我的ViewController's WKWebView
中通过该通知收到的打开链接。
我正试图像这样访问ViewController
// AppDelegate.swift code
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "ShitstuffController")
controller.loadViewIfNeeded();
print(controller);
此时我正在
<Application.ViewController: 0x105c200a0>
其中Application
是我的实际应用程序名称,所以我假设我成功访问了ViewController
,但是当我尝试从中调用方法时,例如
// ViewController.swift code
func getDictionaryValue(string: String) -> String {
let dictionary = Bundle.main.infoDictionary!;
let version = dictionary[string] as! String;
return version;
}
喜欢
// AppDelegate.swift code
controller.getDictionaryValue(string: "CFBundleDisplayName");
我收到错误Value of type 'UIViewController' has no member 'getDictionaryValue'
答案 0 :(得分:2)
ShitstuffController 不属于UIViewController
类实际上是UIViewController
子类ViewController
所以你需要强制转换为ViewController
类
if let controller = storyboard.instantiateViewController(withIdentifier: "ShitstuffController") as? ViewController {
controller.loadViewIfNeeded();
controller.getDictionaryValue(string: "CFBundleDisplayName");
print(controller);
}
然后您就可以调用getDictionaryValue
方法