将数据从tableview传递到webview
我是swift3的新手。 所以,如果您认为这是一个简单的问题,请原谅我。 在我的情况下搜索互联网或堆栈溢出时没有明确的想法,所以我问这个问题。
目标:将数据从tableview传递到webview
示例:表中的数据1,2,3 …,按1,然后跳转到值为1的webview
信息:
- 在main.storyboard中,看起来像:
-
用于具有tableview的视图控制器的类oneViewController
-
用于具有webview的视图控制器的类twoViewController
在oneViewController中,设置得很好并选择行:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { //Array[indexPath.row] //This value expected to pass //some code to execute passing data... //Also, jump into another view controller with webview }
在twoViewController中,一切准备就绪:
//let passData = some code to get the data.... let URL = NSURL(string: "https://www.example.com?data=\(passData)") webView.loadRequest(NSURLRequest(url: URL! as URL) as URLRequest)
最后,PHP可以获得价值
echo $_GET["data"];
问题:
- 如何在main.storyblard中设置tableview和webview之间的关系?
将视图控制器连接到另一个视图控制器? 或者将表视图单元连接到视图控制器? 或者是其他东西…..
- 如何在类oneViewController和twoViewController中实现传递数据?
请按照以下步骤操作: –
第1步:下面的代码将启动并传递TwoViewController
的数据。 请注意,在Main.Storyboard-> TwoViewContoller中,将标识符指定为TwoViewController
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let twoVC:TwoViewController = storyBoard.instantiateViewController(withIdentifier: "TwoViewController") as! TwoViewController twoVC.passData = Array[indexPath.row] self.present(twoVC, animated: true, completion: nil) }
第2步:在TwoViewController
类中定义一个变量,如下所示
var passData: String = ""
你可以做三个解决方案:
1-以segue发送数据
2-忘记segue关系并在didSelectRowAt中调用新控制器,并设置如下数据:
let vc = UIStoryboard(name: "BarcodeScanner", bundle: nil).instantiateInitialViewController()! as! BarcodeScannerViewController vc.passData = valueWantToSend self.presentViewController(vc, animated: true, completion: nil)
3-使用这样的结构,你可以在项目的任何地方使用你的数据:
struct Variables { static var value = false static var passData = "" }
例如: Variables.passData=@"new value"