我有2个VC在运行时运行良好。但是,阵列位于全局区域中。这似乎有风险。如果我将它们移动到FirstViewController类,它们将不会传递给SecondViewController。
有没有办法可以重写或宣布它们更安全?我尝试了很多解决方案,但似乎无法找到正确的代码语法。
FirstViewController
import UIKit
var siteName = ["Google", "Yahoo", "YouTube"]
var siteAddress = ["https://www.google.com", "https://www.yahoo.com", "https://www.youtube.com"]
var row = 0
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return siteName.count
}
internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = siteName[indexPath.row]
return cell
}
internal func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
row = indexPath.row
performSegue(withIdentifier: "mySegue", sender: self)
}
}
SecondViewController
import UIKit
import WebKit
class SecondViewController: UIViewController, WKUIDelegate {
@IBOutlet weak var navBarTitle: UINavigationItem!
@IBOutlet weak var webViewConnect: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
navBarTitle.title = siteName[row]
let myURL = URL(string: siteAddress[row])
let myRequest = URLRequest(url: myURL!)
webViewConnect.load(myRequest)
}
}
*修订工作代码*
MasterViewController
import UIKit
class siteVars {
var siteName = ["Google", "Yahoo", "YouTube"]
var siteAddress = ["https://www.google.com", "https://www.yahoo.com", "https://www.youtube.com"]
var siteRow = 0
}
FirstViewController
import UIKit
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var siteData = siteVars()
internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return siteData.siteName.count
}
internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = siteData.siteName[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
siteData.siteRow = indexPath.row
performSegue(withIdentifier: "mySegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "mySegue" {
let secondViewController = segue.destination as! SecondViewController
secondViewController.siteData.siteRow = siteData.siteRow
}
}
}
SecondViewController
import UIKit
import WebKit
class SecondViewController: UIViewController, WKUIDelegate {
var siteData = siteVars()
@IBOutlet weak var navBarTitle: UINavigationItem!
@IBOutlet weak var webViewConnect: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
navBarTitle.title = siteData.siteName[siteData.siteRow]
let myURL = URL(string: siteData.siteAddress[siteData.siteRow])
let myRequest = URLRequest(url: myURL!)
webViewConnect.load(myRequest)
}
}