見出し画像

【徒然iOS】気ままにUIKit95〜Table View Controller Static Cellを使ってストーリーボードのみでテーブルを作る〜

概要

このマガジンは四十を過ぎたおっさんが、

を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけな記事を気ままに上げてます。

今回

をハイ、レッツゴ🕺

前準備

念の為、

  1. バックアップ

をいつも通りやってから本題へ💃

こんな感じで〜〜〜
TableViewController用のメニュビューも追加〜〜〜💃

本題

テーブルビューコントローラーとは

テーブルビューを管理するコントローラー
直下にテーブルビューが配置されているのが特徴
👉テーブルビューコントローラーを使うと画面いっぱいにテーブルが表示される。

テーブルビューを画面全体にしないで他の部品も配置したい場合は
テーブルビューコントローラーを使わずに、
テーブルビューの部品を使うのが望ましい。

てことらしい👀

テーブルビューに格納するセルは、

  • 動的セル(Dynamics Prototypes):動的セルは雛形セルを使ってソースコードからデータの編集を行う

  • 静的セル:静的セルはストーリーボードのみでテーブルに表示するレコードすべてを作れる。

⒈事前準備〜〜〜

てな感じかな💦

⒉テーブルビューコントローラを追加

選んで〜〜〜
配置
今の仕様だと、セルは元々1個みたいだね

⒊is initializeをテーブルビューコントローラのビューにセットして、セルの中にイメージを配置

チェック入れた🕺
配置

⒋イメージにpin制約を追加して、tagを2に設定

制約追加〜〜〜
tagを2に〜〜〜

⒌セルの中にラベルを配置後、pin制約を追加し、tagを1、Alignmentを右揃えにする

ラベルを配置して、pin制約を追加〜〜〜
tagを1に〜〜〜
右揃えに〜〜〜

⒍TableViewCellをコピーして、貼り付けて2個増やし、ラベル名とイメージを変える

コイツをコピーして〜〜〜
そのまま2回Ctrl+Vキーで、貼り付け〜〜〜
てな感じで〜〜〜
ハイ、変更完了🕺
この時点でやっても出てこないね〜〜〜
待てど、暮らせど、、、👀

⒏テーブルビューのContentをStatic Cellに設定

と実は、当たり前の話で、、、

ここを変更してないから〜〜〜

変更すると〜〜〜

出てくる🕺

7セルをModalで接続

1個ずつ、、、
ハイ、繋ぎ終わり🕺

⒏コード組み込み

//
//  TestTableViewController.swift
//
import UIKit
class TestTableViewController: UITableViewController {
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    //画面遷移実行前の呼び出しメソッド
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        //選択中のセルの画像とテキストを取得する。
        let cell = super.tableView(tableView, cellForRowAtIndexPath:self.tableView.indexPathForSelectedRow!)
        let label = cell.viewWithTag(1) as! UILabel
        let imageView = cell.viewWithTag(2) as! UIImageView
        //遷移先のビューコントローラーを取得し、インスタンス変数に画像とテキストを設定する。
        let controller:ViewController = (segue.destinationViewController as? ViewController)!
        controller.testTitle = label.text
        controller.testImage = imageView.image
    }
}
//
//  ViewController.swift
//
import UIKit
class ViewController: UIViewController {
    @IBOutlet weak var testNavigationBar: UINavigationBar!
    @IBOutlet weak var testImageView: UIImageView!
    var testTitle:String!
    var testImage:UIImage!
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
        //画像とタイトルを設定する。
        testImageView.image = testImage
        testNavigationBar.topItem!.title = testTitle
    }
    //ボタン押下時の呼び出しメソッド
    @IBAction func pushButton(sender: UIBarButtonItem) {
        //モーダル表示されているビューコントローラーを解放する。
        self.dismissViewControllerAnimated(true, completion:nil)
    }
}

て、コードは書かないって冒頭に書いておきながら、
思いっきりコード組み込むんだね👀
しかもアウトレット接続やらアクション接続までしてるし、、、💦

て、ことで、

てな感じで、クラスを新規で作って、最初追加したビューに追加〜〜〜
イメージビューをアウトレット接続
ナビゲーションバーをアウトレット接続
バーボタンをアクション接続

今回のコード(まとめ)

class TableViewControllerStandardViewController: UIViewController {
    
    @IBOutlet weak var myNavigationBar: UINavigationBar!
    @IBOutlet weak var myImageView: UIImageView!
    var myTitle:String!
    var myImage:UIImage!
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
        //画像とタイトルを設定する。
        myImageView.image = myImage
        myNavigationBar.topItem!.title = myTitle
    }
    //ボタン押下時の呼び出しメソッド
    @IBAction func myBarButton(_ sender: UIBarButtonItem) {
        //モーダル表示されているビューコントローラーを解放する。
        self.dismiss(animated: true, completion:nil)
    }
}

class MyTableViewStandardController: UITableViewController {
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    //画面遷移実行前の呼び出しメソッド
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //選択中のセルの画像とテキストを取得する。
        let cell = super.tableView(tableView, cellForRowAt:self.tableView.indexPathForSelectedRow!)
        let label = cell.viewWithTag(1) as! UILabel
        let imageView = cell.viewWithTag(2) as! UIImageView
        //遷移先のビューコントローラーを取得し、インスタンス変数に画像とテキストを設定する。
        let controller:TableViewControllerStandardViewController = (segue.destination as? TableViewControllerStandardViewController)!
        controller.myTitle = label.text
        controller.myImage = imageView.image
    }
}

で、コード組み込み〜〜〜

テーブルビューコントローラにもクラス適用して〜〜〜

⒐シミュレータで実行

起動〜〜〜
3つ目〜〜〜
戻るボタンで戻ったところ〜〜〜

サイト記事の内容としては以上。

ブラッシュアップ

も兼ねて〜〜〜

ナビゲーションコントローラと繋ぐとどうなるか検証

イニシャライズをココに戻して〜〜〜
繋いで〜〜〜
配置を見やすく変えて〜〜〜
シミュレータ起動
出てきた
戻れた〜〜〜
ハイ、問題なし🕺

あとは、恒例の地球儀ボタンをいつも通り追加して〜〜〜

追加して〜〜〜

記事公開後、

ハイ、完了💃
実機も問題なし🕺

Apple公式

さて、次回は

をレッツゴする🕺

残り13回かな💦👀

ここら辺が結構、一番よく使うこともありそうなのに

GitHub上のファイルを使って、説明端折り過ぎてるから、
マジで大変〜〜〜苦労する💦
何をやらせたいのか詳細を書かずに端折れるものは端折るのが、
理系出身のエンジニアの癖みたいなもんだけど、

伝わらなきゃ意味ないし。
わかって当たり前
見ればわかるは当たり前
調べればわかるは当たり前
確認不足、説明不足
👉全て、現場で起きるバグの79~84%はコレが原因。

いいなと思ったら応援しよう!