【swift・初心者】tableview・画面遷移・URL・webViewあたりの備忘
ども
ダメリです
tableViewを使った画面遷移を勉強しました。
備忘のために流れを。
◆インターフェイス側
メインストーリーボードでナビゲーションコントローラー・tabelview・webView+viewControllerを準備。画面遷移の接続。及び名前付け。
それとcocoatouchでviewContoroller.swiftを作成。
◆プログラム側
①セルに入れたいデータを配列で作る。
var data: [String] = ["愛加那","赤橋登子","明智光秀","朝日姫","足利尊氏"]
②セル
セクションの数→セルの数→セルの中身
1:セクションの数
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
今回はセクションの数は1なので1
2:セルの数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
今回は5個のセルを使ったので5
3:セルの中身
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = self.data[indexPath.row]
return cell
}
※"cell"はprottype cellsの名前。
③2ページ目(ウェブページ表示画面)
webViewをプログラム側に接続→読み込むURLを格納→swift用に翻訳→読み込む→表示
1:webViewをプログラム側に接続
@IBOutlet weak var detail: UIWebView!
2:読み込むURLを格納
let url = "https://ja.wikipedia.org/wiki/\(self.receive)".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
※\(self.receive)は今は無視。最初は該当ページのURLでおK
※.stringBy~はエンコーダ
3:swift用に翻訳
let nsUrl = NSURL(string: url!)
4:読み込む
let request = NSURLRequest(URL: nsUrl!)
5:表示
self.detail.loadRequest(request)
※detailはwebViewの名前
6:データ保管場所を作る
var receive: String!
※次の項目参照
④セルをタップした時のアクション
④:セルをタップした時のアクション
タップした時の命令→ストーリーボードに2ページ目(画面名:詳細)を呼んできてもらう→ナビゲーションコントローラーに読んできてもらった2ページ目を前にプッシュしてもらう。→nextView=呼んできた2ページ目のreceiveというデータ保管場所に配列のデータを保存
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//ストーリーボードに2ページ目(画面名:詳細)を呼んできてもらう
//as! detailViewControllerはカスタムしたパーツであることの証。
let nextView = self.storyboard?.instantiateViewControllerWithIdentifier("詳細") as! detailViewController
//ナビゲーションコントローラーに読んできてもらった2ページ目を前にプッシュしてもらう。
self.navigationController?.pushViewController(nextView, animated: true)
//nextView=呼んできた2ページ目のreceiveというデータ保管場所に配列のデータを保存
nextView.receive = self.data[indexPath.row]
}
では。