前提・実現したいこと
作りたい画面:
第1画面 TableView01 完成しています。
第2画面 TableView02 完成しました。
この画面の項目をタップした場合、WebViewに遷移し、タップされた項目に対応したURLを表示したい。
発生している問題
TableView01よりTableView02に遷移して表示させることはできました。TableView02の項目をタップした場合、それに対応したURLを表示せず、画面のナビゲーションバーとタブバーは表示されますが、中間が白紙のままです。
約100個あるURLを効率よく表示する方法を教えてください。
作成したコードは下記のとおりです。
コード1
TableView02コードのエッセンス部分は下記のとおりです。
// TableView02.swift //中略 class TableView02: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet var tableView02: UITableView! var selectedIndexPathInViewController: NSIndexPath! let texts00 = ["01:自動で始まり終わる", //中略 let texts00URL = ["https://vimeo.com/150761576", "https://vimeo.com/150759960", "https://vimeo.com/150759960", "https://vimeo.com/150759960", //中略 "https://vimeo.com/150759960"] //中略 let texts01URL = ["https://vimeo.com/150759960", "https://vimeo.com/150759960", //中略 "https://vimeo.com/150759960"] //中略 let subtexts00 = ["動画の基本的な見方", "", "", //中略 //teratail助言2追加 var texts : [[String]]! var subtexts : [[String]]! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Prepare interstitial Ad UIViewController.prepareInterstitialAds() // Show iAd self.canDisplayBannerAds = true //self.setupFriends() texts = [texts00,texts01,texts02,texts03,texts04,texts05,texts06,texts07,texts08] subtexts = [subtexts00,subtexts01,subtexts02,subtexts03,subtexts04,subtexts05,subtexts06,subtexts07,subtexts08] tableView02.delegate = self tableView02.dataSource = self let nib = UINib(nibName: "CustomCell", bundle: nil) tableView02.registerNib(nib, forCellReuseIdentifier: "Cell") } // テーブルビューのタイトルを表示 //中略 return label } func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int { return texts[selectedIndexPathInViewController.row].count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //中略 return cell } //テーブルビューのセルがタップされた処理 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { //セルのインデックスパス番号を出力 print("タップされた2番目セルのインデックスパス:\(indexPath.row)") selectedIndexPath = indexPath //cellが選択された場合 //toDetailViewへ遷移するためにsegueを呼び出す performSegueWithIdentifier("toDetailView", sender: self) print("ここまで来た02") // let stroyboard = self.storyboard // let detailViewController = stroyboard?.instantiateViewControllerWithIdentifier("DetailViewController") as? DetailViewController } //テーブルビューのセルがタップされた処理 var selectedIndexPath: NSIndexPath! override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier == "toDetailView") { print("ここまで来た03") let subVC02 = (segue.destinationViewController as? DetailViewController)! subVC02.selectedIndexPathInViewController = selectedIndexPath print("ここまで来た04") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
コード2
DetailViewController.swift WebViewを表示する画面のファイルコード
//中略 import Foundation import UIKit import iAd class DetailViewController: UIViewController, UIWebViewDelegate { @IBOutlet weak var WebView: UIWebView! var selectedIndexPathInViewController: NSIndexPath! var urlString : String? override func viewDidLoad() { super.viewDidLoad() print("ここまで来た04a") // Prepare interstitial Ad UIViewController.prepareInterstitialAds() // Show iAd self.canDisplayBannerAds = true print("ここまで来た04") //画面一杯にWebを表示 let WebView : UIWebView = UIWebView() WebView.delegate = self WebView.frame = self.view.bounds self.view.addSubview(WebView) print("ここまで来た05") print("渡されたULRString:\(urlString)") //中略 // //ページが読み終わったときに呼ばれる関数 // func webViewDidFinishLoad(webView: UIWebView) { // print("ページ読み込み完了しました!") // } // //ページを読み始めた時に呼ばれる関数 // func webViewDidStartLoad(webView: UIWebView) { // print("ページ読み込み開始しました!") // } // override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
ご参考事項
AAA
iMac27 OS-X11.5 El Capitan
Xcode 7.3.1
BBB
コードに書き込んだURLは、ダミーですが表示はされます。
CCC
https:///www. 問題を回避するinfo.plistの操作
Allow Arbitrary LoadsをYesにする操作は行っております。
DDD
結びつきは下記の画像のとおりです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/24 08:42
2016/06/24 09:00
2016/06/24 10:00