ダメリのブログ

日々の失敗・キャリア・プログラミング・株・毎日の失敗等。誰かの役に立てれば幸いです。

【swift・初心者】tableview・画面遷移・URL・webViewあたりの備忘

ども

ダメリです

 

tableViewを使った画面遷移を勉強しました。

 


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]

    }

 

では。