【发布时间】:2015-07-02 10:06:57
【问题描述】:
我用 Swift 构建了一个 iOS 应用程序。如果“上一个”网页的按钮在另一个 swift 文件“widgetcontroller”中,如何从“mainviewcontroller”获取/调用 webview 对象。
在带有“webview”对象的“mainviewcontroller”文件中。
import Foundation
import UIKit
import WebKit
class MainViewController: UIViewController, WKScriptMessageHandler, WKNavigationDelegate {
@IBOutlet var webView : WKWebView!
override func loadView() {
super.loadView()
}
@IBAction func history(sender: AnyObject) {
webView?.goBack()
}
}
另一个文件是按钮。
import Foundation
import UIKit
class WidgetViewController: UIViewController {
override func viewDidLoad() {
self.booktransitionManager.sourceViewController = self
super.viewDidLoad()
}
@IBAction func goprevious(sender: AnyObject) {
MainViewController.history()
}
}
goprevious -> 链接到按钮“修饰”操作。
当我运行它时,它会使 iPhone 应用程序崩溃。知道如何解决这个问题吗?
【问题讨论】:
-
通常的方式是实现一个协议和一个委托。有很多例子可以做到这一点
-
您需要以某种方式引用您的
MainViewController。这可以通过多种不同的方式来实现。请发布更多上下文和代码。 -
@pe60t0 查看 MainViewController 的更新代码
-
是的,你不能这样做——像这样调用 history() 方法是无效的。阅读有关如何使用委托模式的信息。基本上,您需要一个对象将 goprevious() 方法委托回
MainViewController。出于好奇 - 你所说的“其他文件是按钮”是什么意思?这些视图控制器是如何呈现的? -
网上可以很容易找到objective-c/swift中委托模式的使用方法
标签: ios swift uiwebview callback wkwebview