ナビゲーションコントローラーとテーブルビュー、WebKitビューを使用し、テーブルビューのセルをタッチするとサイトの画面に移動するアプリを作ろうとしています。
テーブルビューのコードには
import
1//WebListTableViewControllerはUITableViewControllerを継承している。このUITableViewControllerはUIViewControllerを継承し、UITableViewDelegeteとUITableViewDataSourseをプロトコルとして追加しているクラスのため、必要なものは初めから実装されている。 2class WebLisTableViewController: UITableViewController { 3let WebList = [ 4 (name:"けっつん ",url:"https://www.youtube.com/user/ketsugeketsuge"), 5 (name:"水溜りボンド",url:"https://www.youtube.com/channel/UCpOjLndjOqMoffA-fr8cbKA"), 6 (name:"水溜りボンドの日常",url:"https://www.youtube.com/channel/UCaTFX7ckdowpnwHWcJGH2KQ"), 7 (name:"キヨ",url:"https://www.youtube.com/channel/UCMJiPpN_09F0aWpQrgbc_qg") 8 ] 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 // Uncomment the following line to preserve selection between presentations 13 // self.clearsSelectionOnViewWillAppear = false 14 15 // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 16 // self.navigationItem.rightBarButtonItem = self.editButtonItem 17 } 18 19 // MARK: - Table view data source 20 21 override func numberOfSections(in tableView: UITableView) -> Int { 22 // #warning Incomplete implementation, return the number of sections 23 return 1 24 } 25 26 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 27 // #warning Incomplete implementation, return the number of rows 28 return WebList.count 29 } 30 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 31 32 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 33 34 let webDate = WebList[(indexPath as NSIndexPath).row] 35 cell.textLabel?.text = webDate.name //サイト名の表示 タイトル 36 cell.detailTextLabel?.text = webDate.url //URLの表示 サブタイトル 37 38 return cell 39 } 40//セグエで移動する前にデータを受け渡す 41 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 42 //セグエがshowWebPageの時の処理 43 if segue.identifier == "showWebPage"{ 44 if let indexPath = self.tableView.indexPathForSelectedRow{ 45 let webDate = WebList[(indexPath as NSIndexPath).row] 46 (segue.destination as! ViewController).data = webDate 47 } 48 } 49 50 51} 52}
ViewControllerのコードは
import UIKit import WebKit class ViewController: UIViewController { @IBOutlet weak var webView: WKWebView! //シーン移動の際の設定されるWebデータ var data:(name:String,url:String)? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //dataが設定されていればWebDateに代入 guard let WebDate = data else{ return } //表示するWebページのURLRequestを作る let myURL = URL(string: WebDate.url) let myRequest = URLRequest(url: myURL!) //Webにを読み込む webView.load(myRequest) } }
となっており、エラーは出ていない状態です。
ここで、シュミレーターを起動すると、
ちゃんと表示されていない状態になってしまいます。
デバックエリアには
と表示されています。
ネットで調べたところ、
赤丸で囲ったところを設定したら解決できると書いてあり、設定してみたのですが、シュミレーターは同じ状態でちゃんと作動しません。
解決方法、解決するために何を調べたら良いかなどわかれば教えてください。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/18 06:46