我想创建一个webview控制器和我正在做的事情,我只是制作一个像这样的webview控制器超类:
```
class YQTWebViewController: BaseViewController {
var webview = WKWebView()
var urlString: String?
var activityIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
webview.allowsBackForwardNavigationGestures = true
webview.navigationDelegate = self
view.addSubview(webview)
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
// 30 by 30
let x = UIScreen.mainScreen().bounds.size.width / 2 - 20
let y = UIScreen.mainScreen().bounds.size.width / 2 - 20
activityIndicator.frame = CGRectMake(x, y, 40, 40)
view.addSubview(activityIndicator)
guard urlString != nil else {
return
}
let url = NSURL(string: urlString!)
let request = NSURLRequest(URL: url!)
webview.loadRequest(request)
}
```
我只想创建YQTWebViewcontroller的子类,并在完成初始化视图控制器时覆盖urlString,但我不知道我应该在哪里放置代码。任何人都可以给我一些建议吗?提前致谢。
答案 0 :(得分:0)
为什么不创建像loadUrlInWebview这样的选择器方法:将urlString作为参数并将加载的Url代码放在此选择器主体中。因此,您的加载URL正文代码应从ViewDidLoad方法中删除并传递到此选择器。从子类中调用此方法,将urlString作为参数传递。
所以把这段代码:
func loadUrlInWebview(urlString: String!) {
guard urlString != nil else {
return
}
let url = NSURL(string: urlString!)
let request = NSURLRequest(URL: url!)
webview.loadRequest(request)
}
从子类方法调用此方法,将URL作为参数传递。
答案 1 :(得分:0)
import WebKit
class YQTWebViewController: UIViewController {
var webview = WKWebView()
var urlString: String?
var activityIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
webview.allowsBackForwardNavigationGestures = true
//webview.navigationDelegate = self
view.addSubview(webview)
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
// 30 by 30
let x = UIScreen.mainScreen().bounds.size.width / 2 - 20
let y = UIScreen.mainScreen().bounds.size.width / 2 - 20
activityIndicator.frame = CGRectMake(x, y, 40, 40)
view.addSubview(activityIndicator)
guard urlString != nil else {
return
}
let url = NSURL(string: urlString!)
let request = NSURLRequest(URL: url!)
webview.loadRequest(request)
}
class SubViewController : YQTWebViewController{
override var urlString: String? {
get {
return self.urlString
}
set {
self.urlString = newValue
}
}
override func viewDidLoad() {
super.viewDidLoad()
urlString = "YOUR URL STRING"
}
}