【发布时间】:2018-12-25 17:31:02
【问题描述】:
我有两个视图控制器。一个有一个 tableView,其中有一些来自数组的单元格;另一个是一个 viewController,它包含一个我想展示一些本地 HTML 文件的 webkit。我还将 webKit 页面定义为 tableView 的下一页。 我想要的是,当用户在 tableView 中选择一个单元格时,根据选择的单元格,它转到 webkit 页面,并且运行某些部分代码供用户显示特定的 HTML。换句话说,我在 tableViewCells 中有 5 个 HTML 文件和 5 个项目 因此,例如,如果用户选择第一个项目,HTML1 会显示给他,如果他选择第二个单元格,则 HTML2 会显示给他,等等。
我尝试了很多方法。但什么也没发生。还尝试从 tableview 类创建实例对象... 在 StackOverFlow 中也尝试了一些相同的问题,但没有成功
首页:
var arr = ["masoud" , "hossein", "reza" , "shiva" , "fateme"]
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("item selected is : \(indexPath.row)")
// if indexPath.row == 1 {
performSegue(withIdentifier: "TableSegue", sender: nil)
//}
tableView.deselectRow(at: indexPath, animated: true)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
switch (segue.destination.view, segue.destination, sender) {
case let (_, controller as WebKitController, indexPath as NSIndexPath):
controller.indexPath = indexPath
break
default:
break
}
}
第二页:
import WebKit
class WebKitController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var myWebKit: WKWebView!
var reza : String = String()
var indexPath: NSIndexPath? {
didSet {
reza = (indexPath?.row.description)!
print(indexPath?.row as Any)
self.myWebKit.uiDelegate = self
self.myWebKit.navigationDelegate = self
}
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "reza", withExtension: "html", subdirectory: "ReZeynoo2")!
myWebKit.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
myWebKit.load(request)
self.myWebKit.uiDelegate = self
self.myWebKit.navigationDelegate = self
}
【问题讨论】: