如何从其他swift文件中调用该对象

时间:2015-07-02 10:06:58

标签: ios swift uiwebview callback wkwebview

我用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应用程序。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您可以通过以下任何方式执行此操作:

  1. 当第二个控制器离开并让父母听取它时发送通知。为:
  2. 添加观察者:

        NSNotificationCenter.defaultCenter().addObserver(
        self,
        selector: "viewHistory:",
        name: "ViewHistory",
        object: nil)
    

    观察员方法:

    @objc func viewHistory(notification: NSNotification){     
        //do stuff
    }
    

    致电通知

    NSNotificationCenter.defaultCenter().postNotificationName("ViewHistory", object: nil)
    
    1. 创建一个委托协议,让第二个控制器直接引用父方法。

    2. 使用父视图的viewWillAppear:并检查isMovingToParentViewController属性是否只是重新出现。

    3. 并应用最适合您的价值传递条件和价值可用性的内容。

答案 1 :(得分:0)

您可以使用IF,如下所示

NSNotificationCenter