我有一個UIViewController
和UIWebViewDelegate
。我發現我可以呈現它很好,但不推動它。如果我嘗試推送它,目標視圖控制器將加載並執行任何變量集但不會觸發viewDidLoad()
,而只是返回到我的調用菜單視圖控制器,而不會出錯。Swift 3.可以用UIWebViewDelegate呈現一個UIViewController,但不會推送它
我在類之後的第一個var聲明中設置了一個斷點並遍歷了代碼。當它到達webView init時,它會在模擬器中閃現home(不是目標)視圖控制器,然後在返回到我的主視圖控制器之前通過var聲明繼續。
這裏是我的菜單代碼
作品:
let myWebViewController = MyWebViewController()
myWebViewController.urlString = "myUrl"
present(myWebViewController, animated: true, completion: nil)
不起作用
let myWebViewController = MyWebViewController()
myWebViewController.urlString = "myUrl"
let navController = (UIApplication.shared.delegate as! AppDelegate).navController
navController!.pushViewController(myWebViewController, animated: true)
這是我編校目標視圖控制器代碼。要加載的URL在菜單中設置。
import UIKit
class MyWebViewController: UIViewController, UIWebViewDelegate {
var urlString: String = "invalid url"
var url: URL {
return URL(string: urlString)!
}
var urlRequest: URLRequest {
var urlRequest = URLRequest(url: url)
return urlRequest
}
let webView: UIWebView = {
let view = UIWebView()
view.backgroundColor = .white
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
// declare various buttons and stack views
override func viewDidLoad() {
super.viewDidLoad()
webView.delegate = self
contentStackView.addArrangedSubview(webView)
mainStackView.addArrangedSubview(contentStackView)
view.addSubview(mainStackView)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
webView.loadRequest(urlRequest as URLRequest)
}
你能展示更多的代碼嗎?短語「present(myWebViewController ...」)或者是「navController!」。如果你沒有顯示變量'myWebViewController'的位置,那麼'pushViewController'就沒有意義了,而且我懷疑你沒有顯示的代碼中的某處是_exactly_問題的根源。 - 另外,請返回所有代碼並使所有_classes以大寫字母_開頭。所以這將是一個變量'myWebViewController',其類型爲'MyWebViewController'。 – matt
小寫的類名只是在這裏的拼寫錯誤。我更新了我的問題以添加更多代碼。 – markhorrocks
由於目標視圖開始加載,我不認爲菜單代碼是問題,但可能是錯誤的。 – markhorrocks