Swift:(预)从 initialViewController 加载 UIWebView
Swift: (Pre-)load UIWebView from initialViewController
我有两个 ViewController。初始 ViewController 是输入和存储 URL 的地方。这个初始 ViewController 的 viewDidLoad 也应该在应用程序启动时开始加载第二个 ViewController 的 Web 内容。
第二个ViewController 仅包含一个 WebView。
当我启动应用程序时,第二个ViewController 中的func loadWebView 被成功调用。但是,一旦我单击 goButton 以显示第二个 ViewController。它是空的。 (第二次在本地调用func loadWebViewViewController viewDidLoad 会成功加载网站。)
我想我在实例化第二个 ViewController 和调用它的方式上做错了。我想我正在创建 secondViewController 的两个不同实例并调用空实例。如果有任何指点,我会很高兴。
编辑:我希望应用程序在初始 ViewController 打开后立即开始加载网站。不仅当我访问第二个ViewController.
EDIT2:问题可能是 webView.loadRequest(request) 的初始调用数据没有保存到 webView-subview 中吗?第二次调用 webView 时出现空白,因为没有保存数据。有谁知道如何 save/load 来自 loadRequest 调用的数据?
EDIT3:忘记 EDIT2。阅读解决方案正确答案下方的评论!
初始ViewController:
var svc: UIViewController = UIViewController()
override func viewDidLoad() {
loadWebView("https://www.google.com")
}
func loadWebView(URLString:String) {
if let theRequestURL = NSURL (string: URLString) {
let theRequest = NSURLRequest (URL: theRequestURL)
let vc: secondViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("secondViewController") as! secondViewController
vc.loadWebView(theRequest)
svc = vc
}
}
@IBAction func goButton(sender: AnyObject) {
self.presentViewController(svc, animated: false, completion: nil)
}
秒ViewController:
class secondViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView! = UIWebView()
func loadWebView(request : NSURLRequest) {
webView.loadRequest(request)
}
}
我不太确定 secondViewController
的两个实例,但可能是 webView
的两个...假设您在情节提要中定义了一个。实例化 IBOutlet
是 unusual/wrong.
我建议将 loadWebView
变成类似 storeRequestURL
的东西。将请求保存到实例变量,然后在 secondViewController
.
的 viewWillAppear
(或者可能是 viewDidLoad
)中调用 loadRequest
我有两个 ViewController。初始 ViewController 是输入和存储 URL 的地方。这个初始 ViewController 的 viewDidLoad 也应该在应用程序启动时开始加载第二个 ViewController 的 Web 内容。
第二个ViewController 仅包含一个 WebView。
当我启动应用程序时,第二个ViewController 中的func loadWebView 被成功调用。但是,一旦我单击 goButton 以显示第二个 ViewController。它是空的。 (第二次在本地调用func loadWebViewViewController viewDidLoad 会成功加载网站。)
我想我在实例化第二个 ViewController 和调用它的方式上做错了。我想我正在创建 secondViewController 的两个不同实例并调用空实例。如果有任何指点,我会很高兴。
编辑:我希望应用程序在初始 ViewController 打开后立即开始加载网站。不仅当我访问第二个ViewController.
EDIT2:问题可能是 webView.loadRequest(request) 的初始调用数据没有保存到 webView-subview 中吗?第二次调用 webView 时出现空白,因为没有保存数据。有谁知道如何 save/load 来自 loadRequest 调用的数据?
EDIT3:忘记 EDIT2。阅读解决方案正确答案下方的评论!
初始ViewController:
var svc: UIViewController = UIViewController()
override func viewDidLoad() {
loadWebView("https://www.google.com")
}
func loadWebView(URLString:String) {
if let theRequestURL = NSURL (string: URLString) {
let theRequest = NSURLRequest (URL: theRequestURL)
let vc: secondViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("secondViewController") as! secondViewController
vc.loadWebView(theRequest)
svc = vc
}
}
@IBAction func goButton(sender: AnyObject) {
self.presentViewController(svc, animated: false, completion: nil)
}
秒ViewController:
class secondViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView! = UIWebView()
func loadWebView(request : NSURLRequest) {
webView.loadRequest(request)
}
}
我不太确定 secondViewController
的两个实例,但可能是 webView
的两个...假设您在情节提要中定义了一个。实例化 IBOutlet
是 unusual/wrong.
我建议将 loadWebView
变成类似 storeRequestURL
的东西。将请求保存到实例变量,然后在 secondViewController
.
viewWillAppear
(或者可能是 viewDidLoad
)中调用 loadRequest