Ios WKWebView初始化后addUserScript不工作

Ios WKWebView初始化后addUserScript不工作,ios,wkwebview,Ios,Wkwebview,当我在创建WKWebView实例之后更改WKUserContentController时。这是我的密码 let configuration = WKWebViewConfiguration() let userController = WKUserContentController() userController.addUserScript(WKUserScript(source: "alert('it works')", injectionTime: .atDocumentEnd, forM

当我在创建
WKWebView
实例之后更改
WKUserContentController
时。这是我的密码

let configuration = WKWebViewConfiguration()
let userController = WKUserContentController()
userController.addUserScript(WKUserScript(source: "alert('it works')", injectionTime: .atDocumentEnd, forMainFrameOnly: true))

configuration.userContentController = userController // before instantiate WKWebView

webView = WKWebView(frame: view.frame, configuration: configuration)
webView.navigationDelegate = self
webView.uiDelegate = self

view = webView
上面的代码可以正常工作,但下面的代码不行

let configuration = WKWebViewConfiguration()
let userController = WKUserContentController()
userController.addUserScript(WKUserScript(source: "alert('it doesn't work')", injectionTime: .atDocumentEnd, forMainFrameOnly: true))

webView = WKWebView(frame: view.frame, configuration: configuration)
webView.navigationDelegate = self
webView.uiDelegate = self

webView.configuration.userContentController = userController // 
// neither configuration.userContentController = userController

view = webView
为什么会发生这种情况?

事实上,当我用代码写的时候,不管是bug还是别的什么,都没关系。然而,当我将其与故事板一起使用时,这让我感到困扰。在脚本实例化后,我无法更改
WKUserContentController
,请不要更换用户内容控制器。只需使用web视图已有的一个:

let script = // whatever
let config = webView.configuration
config.userContentController.addUserScript(script)

即使web视图来自故事板,这种方法也有效。

你说得对!它起作用了!非常感谢你。我不知道太多细节,但我认为
WKUserContentController
必须是只读的,而不仅仅是
WKWebViewConfiguration