在 for 循环中创建多个 webview swift
Create multiple webviews in a for loop swift
我正在尝试显示 5 个 Web 视图,我希望在 for 循环中创建 Web 视图。我当前使用的代码只创建一个 Web 视图,它应该为页面中的每个 url 创建一个。如有任何帮助,我们将不胜感激!
import UIKit
import Foundation
import WebKit
import AVFoundation
class displayviews: UIViewController, WKUIDelegate {
var pages = ["https://example.com", "https://example", "https://example", "https://example.com", "https://example.com"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for i in pages{
var inti = Int(i) ?? 0
//var currentwebview = String("webView") + i
let myWebView:WKWebView = WKWebView(frame: CGRect(x:0, y:CGFloat(inti*200), width: UIScreen.main.bounds.width, height:UIScreen.main.bounds.height/CGFloat(pages.count)))
myWebView.uiDelegate = self
self.view.addSubview(myWebView)
//1. Load web site into my web view
let myURL = URL(string: pages[inti])
let myURLRequest:URLRequest = URLRequest(url: myURL!)
myWebView.load(myURLRequest)
}
}
}
您的代码正在创建 5 个 webview,问题是它们被放置在彼此之上,因此您只能看到最上面的一个。您可以像下面的示例一样使用堆栈视图,也可以在网络视图上设置约束。
class ViewController: UIViewController, WKUIDelegate {
var pages = ["https://example.com", "https://example.com", "https://example.com", "https://example.com", "https://example.com"]
lazy var stackView: UIStackView = {
let view = UIStackView()
view.axis = .vertical
view.translatesAutoresizingMaskIntoConstraints = false
view.distribution = .fillEqually
self.view.addSubview(view)
NSLayoutConstraint.activate([
view.leftAnchor.constraint(equalTo: self.view.leftAnchor),
view.topAnchor.constraint(equalTo: self.view.topAnchor),
view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for (inti, page) in pages.enumerated() {
//var currentwebview = String("webView") + i
let myWebView:WKWebView = WKWebView(frame: CGRect(x:0, y:CGFloat(inti*200), width: UIScreen.main.bounds.width, height:UIScreen.main.bounds.height/CGFloat(pages.count)))
myWebView.uiDelegate = self
//self.view.addSubview(myWebView)
stackView.addArrangedSubview(myWebView)
//1. Load web site into my web view
let myURL = URL(string: page)
let myURLRequest:URLRequest = URLRequest(url: myURL!)
myWebView.load(myURLRequest)
}
}
}
我正在尝试显示 5 个 Web 视图,我希望在 for 循环中创建 Web 视图。我当前使用的代码只创建一个 Web 视图,它应该为页面中的每个 url 创建一个。如有任何帮助,我们将不胜感激!
import UIKit
import Foundation
import WebKit
import AVFoundation
class displayviews: UIViewController, WKUIDelegate {
var pages = ["https://example.com", "https://example", "https://example", "https://example.com", "https://example.com"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for i in pages{
var inti = Int(i) ?? 0
//var currentwebview = String("webView") + i
let myWebView:WKWebView = WKWebView(frame: CGRect(x:0, y:CGFloat(inti*200), width: UIScreen.main.bounds.width, height:UIScreen.main.bounds.height/CGFloat(pages.count)))
myWebView.uiDelegate = self
self.view.addSubview(myWebView)
//1. Load web site into my web view
let myURL = URL(string: pages[inti])
let myURLRequest:URLRequest = URLRequest(url: myURL!)
myWebView.load(myURLRequest)
}
}
}
您的代码正在创建 5 个 webview,问题是它们被放置在彼此之上,因此您只能看到最上面的一个。您可以像下面的示例一样使用堆栈视图,也可以在网络视图上设置约束。
class ViewController: UIViewController, WKUIDelegate {
var pages = ["https://example.com", "https://example.com", "https://example.com", "https://example.com", "https://example.com"]
lazy var stackView: UIStackView = {
let view = UIStackView()
view.axis = .vertical
view.translatesAutoresizingMaskIntoConstraints = false
view.distribution = .fillEqually
self.view.addSubview(view)
NSLayoutConstraint.activate([
view.leftAnchor.constraint(equalTo: self.view.leftAnchor),
view.topAnchor.constraint(equalTo: self.view.topAnchor),
view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for (inti, page) in pages.enumerated() {
//var currentwebview = String("webView") + i
let myWebView:WKWebView = WKWebView(frame: CGRect(x:0, y:CGFloat(inti*200), width: UIScreen.main.bounds.width, height:UIScreen.main.bounds.height/CGFloat(pages.count)))
myWebView.uiDelegate = self
//self.view.addSubview(myWebView)
stackView.addArrangedSubview(myWebView)
//1. Load web site into my web view
let myURL = URL(string: page)
let myURLRequest:URLRequest = URLRequest(url: myURL!)
myWebView.load(myURLRequest)
}
}
}