2015-11-20 1 views
0

Я пытаюсь вызвать loadAddressURL() в Webview из callbackHandler() в классе xWebAppJS. У меня нет проблем с вызовом callbackHandler() из ViewController, но противоположное не выполняется.Swift: функция вызова из другого класса, чтобы появиться в том же webview

Я в основном пытаюсь перезагрузить страницу или любую другую страницу в Webview из другого класса.

Заранее благодарен! Извините, если вопрос новичков.

class ViewController: UIViewController, UIWebViewDelegate{ 

//... viewDidLoad() 
//... viewDidAppear() 

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let scheme = String(request.URL!) 
     NSLog(scheme) 

    //checks string if contains sequence 
    if scheme.containsString("ios:JS.") { 
     xWebAppJS.callbackHandler(scheme) 

     return false 
    } 
     NSLog("Link was not tapped") 
     return true 
} 

func loadAddressURL(URL: String) { 
    let requestURL = NSURL(string: URL) 
    let request = NSURLRequest(URL: requestURL!) 
    Webview.loadRequest(request) 
} 

Это другой класс, который содержит CallbackHandler

class xWebAppJS: ViewController{ 

class func callbackHandler(oScheme: String) { 
    // I want to call the loadAddressURL() out of this function 

    } 
} 

ответ

0

Поскольку xWebAppJS соответствует ViewController, вы можете просто сделать xwebAppJS().loadAddressUrl(Url:String)

+0

спасибо за вход. Это тип ответа, который я искал, и я не получаю никаких ошибок при вводе этого, но я получаю крах во время выполнения для «фатальной ошибки: неожиданно найдено nil, разворачивающей необязательное значение». Любая подсказка относительно того, что я буду разворачивать и как? – DG7

+0

Я предполагаю, что переменная URL в webView является необязательным значением. Таким образом, чтобы добавить к нему защитный штырь, вы можете сделать так, чтобы охранник допустил следующее: «guard let URL = NSURL (строка:« https://www.yourWebsite.com ») else { print (« URL не найден ») return} ' – mn1

+0

Я уверен, что класс был вызван, когда я использовал ваш ответ, у меня есть целый отдельный набор проблем, потому что то, что вы предложили, также вызывает ошибку. Для этого, хотя я дам ему правильный ответ. Возможно, я задаю неправильный вопрос. спасибо – DG7

0
This will be the answer ! 

**inside the class** 
let requestURL = NSURL(string: "string URL") 
self.loadAddressUrl(requestURL) 

**outside the class** 
let xWebAppJS = xWebAppJS() 
let requestURL = NSURL(string: "string URL") 
xWebAppJS.loadAddressUrl(requestURL) 

func loadAddressURL(requestURL: NSURL) { 
    let request = NSURLRequest(URL: requestURL) 
    webView.loadRequest(request) 
} 
+0

Спасибо за ваш ответ. Я искал что-то ближе к тому, что показал mn1. – DG7