読者です 読者をやめる 読者になる 読者になる

備忘録

なんとなく暇なときにでも....

無限スクロールできるタブを実装する2

前回に引き続き”無限スクロールできるタブを実装する”の第2弾をお届けしたいと思います。

第1弾はこちら↓ hchckeeer.hatenadiary.jp

前回はタブ各ページはなにもないViewでしたが、今回はコンテンツを載せるためのViewを載せるまでの記録です。

前回は各ViewControllerをインスタンスする際に

 let vc1 = UIViewController()

このようにしていました。 単になにもないViewControllerをインスタンス化してるだけです。

ここを少しいじってなにか違うView(今回はTabelViewにします。)を表示しようと思います。

まずStoryBoard上で、TableViewを持ったViewControllerを作成します。

f:id:tomAn:20160606235755p:plain:w400


例によってこのViewControllerClassのカスタムクラスとIdentiferを指定(このとき指定するカスタムクラスは事前に作成しておきます。)

f:id:tomAn:20160606235758p:plain:w300


カスタムクラスの内容は以下の通りです。配置したtableviewをoutlet接続してます。(TableViewについての説明は省略します。)

import UIKit

class MainContentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    @IBOutlet weak var tableview: UITableView!
        
    let texts = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.tableview.delegate = self
        self.tableview.dataSource = self
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    /* tableview */
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return texts.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "contentCell")
        
        cell.textLabel?.text = texts[indexPath.row]
        return cell
    }
    
    func tableView(table: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
        print(texts[indexPath.row])
    }
    /* tableview */
    
}

これで準備は整いました。 TableViewを載せたViewControllerをインスタンス化します。

let vc1 = UIViewController()
   ↓
let storyboard = UIStoryboard(name: "Main", bundle: nil) //①
let vc1 = storyboard.instantiateViewControllerWithIdentifier("mainContents") as! MainContentsViewController //②

①:StoryBoardの名前を指定して、そのStoryBoradを取得(Hoge.storyboardなら"Hoge"と指定します。)
②:今回作成したStoryBorad上のViewControllerを認識するためのIdetiferを指定して、それらをUIViewControllerクラスを継承したMainContentsViewControllerクラスでインスタンス

のようなフローでインスタンス化を行っています。

f:id:tomAn:20160607001725p:plain:w200      f:id:tomAn:20160607001728p:plain:w200


今回はこんな感じでしょうか... 次回はなにをお届けしましょうか。ネタ探しておきますね