![見出し画像](https://assets.st-note.com/production/uploads/images/101949744/rectangle_large_type_2_bbdeff9bbb7ed2bdce989e10934f3862.png?width=1200)
【徒然iOS】気ままにUIKit95〜Table View Controller Static Cellを使ってストーリーボードのみでテーブルを作る〜
概要
このマガジンは四十を過ぎたおっさんが、
を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけな記事を気ままに上げてます。
今回
をハイ、レッツゴ🕺
前準備
念の為、
バックアップ
をいつも通りやってから本題へ💃
![](https://assets.st-note.com/img/1680487782087-FTFO2ImQUO.png?width=1200)
![](https://assets.st-note.com/img/1680488159048-KjtGlJkLG0.png?width=1200)
本題
テーブルビューコントローラーとは
テーブルビューを管理するコントローラー
直下にテーブルビューが配置されているのが特徴
👉テーブルビューコントローラーを使うと画面いっぱいにテーブルが表示される。
↓
テーブルビューを画面全体にしないで他の部品も配置したい場合は
テーブルビューコントローラーを使わずに、
テーブルビューの部品を使うのが望ましい。
てことらしい👀
テーブルビューに格納するセルは、
動的セル(Dynamics Prototypes):動的セルは雛形セルを使ってソースコードからデータの編集を行う
静的セル:静的セルはストーリーボードのみでテーブルに表示するレコードすべてを作れる。
⒈事前準備〜〜〜
![](https://assets.st-note.com/img/1680494258497-KnpfZG2IDJ.png?width=1200)
⒉テーブルビューコントローラを追加
![](https://assets.st-note.com/img/1680494328215-cgAtre6fH0.png?width=1200)
![](https://assets.st-note.com/img/1680494339444-Atoy3rZpoT.png?width=1200)
![](https://assets.st-note.com/img/1680494368235-tgVAe8kx9C.png?width=1200)
⒊is initializeをテーブルビューコントローラのビューにセットして、セルの中にイメージを配置
![](https://assets.st-note.com/img/1680494444305-zVkOVNpFI4.png?width=1200)
![](https://assets.st-note.com/img/1680494519472-3YDOw6owjE.png?width=1200)
⒋イメージにpin制約を追加して、tagを2に設定
![](https://assets.st-note.com/img/1680494907355-dNPCkF0iQP.png?width=1200)
![](https://assets.st-note.com/img/1680494921075-c6HxHGz0rn.png?width=1200)
⒌セルの中にラベルを配置後、pin制約を追加し、tagを1、Alignmentを右揃えにする
![](https://assets.st-note.com/img/1680495014909-6TQtCpprry.png?width=1200)
![](https://assets.st-note.com/img/1680495036834-TYwr9bA7YE.png?width=1200)
![](https://assets.st-note.com/img/1680495117116-nDBW9xcutp.png?width=1200)
⒍TableViewCellをコピーして、貼り付けて2個増やし、ラベル名とイメージを変える
![](https://assets.st-note.com/img/1680495190834-wpbStv8jll.png?width=1200)
![](https://assets.st-note.com/img/1680495205834-V1iV5FMpIx.png?width=1200)
![](https://assets.st-note.com/img/1680495395716-6cVA93kMSf.png?width=1200)
![](https://assets.st-note.com/img/1680495406618-UPDm3IGVF8.png?width=1200)
![](https://assets.st-note.com/img/1680495634843-hJOGeLQc7r.png?width=1200)
待てど、暮らせど、、、👀
⒏テーブルビューのContentをStatic Cellに設定
と実は、当たり前の話で、、、
![](https://assets.st-note.com/img/1680496069557-44JTCl41on.png)
変更すると〜〜〜
![](https://assets.st-note.com/img/1680495992558-ZBQJd7sPzR.png?width=1200)
7セルをModalで接続
![](https://assets.st-note.com/img/1680496148756-5nH1vlyhXV.png?width=1200)
![](https://assets.st-note.com/img/1680496162833-W4J9YeneE1.png?width=1200)
⒏コード組み込み
//
// 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)
}
}
て、コードは書かないって冒頭に書いておきながら、
思いっきりコード組み込むんだね👀
しかもアウトレット接続やらアクション接続までしてるし、、、💦
て、ことで、
![](https://assets.st-note.com/img/1680496495736-lPWpBlM7uI.png?width=1200)
![](https://assets.st-note.com/img/1680496594099-1uPixdkBY7.png?width=1200)
![](https://assets.st-note.com/img/1680496613341-m9wLgFXezM.png?width=1200)
![](https://assets.st-note.com/img/1680496637925-otiQYwOYwi.png?width=1200)
今回のコード(まとめ)
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
}
}
で、コード組み込み〜〜〜
![](https://assets.st-note.com/img/1680497571972-TpuzoY2mId.png?width=1200)
⒐シミュレータで実行
![](https://assets.st-note.com/img/1680497671652-LoGI2IN2cU.png?width=1200)
![](https://assets.st-note.com/img/1680497684697-ZSshYLsaZo.png?width=1200)
![](https://assets.st-note.com/img/1680497697085-K0leLrvbzi.png?width=1200)
サイト記事の内容としては以上。
ブラッシュアップ
も兼ねて〜〜〜
ナビゲーションコントローラと繋ぐとどうなるか検証
![](https://assets.st-note.com/img/1680497893706-fJe6x2eXeo.png?width=1200)
![](https://assets.st-note.com/img/1680497919654-FkrA8yHnAC.png?width=1200)
![](https://assets.st-note.com/img/1680497932014-15OTTNQDwR.png?width=1200)
![](https://assets.st-note.com/img/1680497948947-iZ22gMRyg5.png?width=1200)
![](https://assets.st-note.com/img/1680497961721-w8OJISvQV6.png?width=1200)
![](https://assets.st-note.com/img/1680497973054-Mlh4FBExw2.png?width=1200)
ハイ、問題なし🕺
あとは、恒例の地球儀ボタンをいつも通り追加して〜〜〜
![](https://assets.st-note.com/img/1680498204460-WCy272Dhil.png?width=1200)
記事公開後、
![](https://assets.st-note.com/img/1680498834849-47YAcHpbR3.png?width=1200)
実機も問題なし🕺
Apple公式
さて、次回は
をレッツゴする🕺
残り13回かな💦👀
ここら辺が結構、一番よく使うこともありそうなのに
GitHub上のファイルを使って、説明端折り過ぎてるから、
マジで大変〜〜〜苦労する💦
何をやらせたいのか詳細を書かずに端折れるものは端折るのが、
理系出身のエンジニアの癖みたいなもんだけど、
伝わらなきゃ意味ないし。
わかって当たり前
見ればわかるは当たり前
調べればわかるは当たり前
確認不足、説明不足
👉全て、現場で起きるバグの79~84%はコレが原因。