我用Swift构建了一个iOS应用程序。如果' previous'的按钮,如何从' mainviewcontroller'中获取/调用webview对象?网页位于另一个快速文件' widgetcontroller'。
在' mainviewcontroller'带有' webview'的文件对象
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应用程序。知道如何解决这个问题吗?
答案 0 :(得分:0)
您可以通过以下任何方式执行此操作:
添加观察者:
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "viewHistory:",
name: "ViewHistory",
object: nil)
观察员方法:
@objc func viewHistory(notification: NSNotification){
//do stuff
}
致电通知
NSNotificationCenter.defaultCenter().postNotificationName("ViewHistory", object: nil)
创建一个委托协议,让第二个控制器直接引用父方法。
使用父视图的viewWillAppear:并检查isMovingToParentViewController属性是否只是重新出现。
并应用最适合您的价值传递条件和价值可用性的内容。
答案 1 :(得分:0)
您可以使用IF
,如下所示
NSNotificationCenter