2019.04.11
Storyboardを使わず.xibファイルからTableViewを実装しようと思います。
※Storyboardを使わない方法については以前の記事に記述してありますので、よろしければ参照してください。
環境 [xcode 10.2:swift 5.0]
xibファイルのviewの中に”Table View”を配置してください。
(オブジェクト一覧を出したままにしたい場合は、オブジェクトの表示ボタンを”commandキー”を押したままクリックしますと消えなくなります。)
配置した”Table View”を”controlキー”を押しながらViewController.swiftにドラッグします。
ドラッグしたオブジェクトについての名前を聞かれますので、適当な名前を入力してください。今回はtableViewにしました。 後はコードを記述していきます。今回はTabeleViewに都道府県一覧が表示されるための最小限のコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{ @IBOutlet weak var tableView: UITableView! let items = ["北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", "静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", "徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県" ] override func viewDidLoad() { super.viewDidLoad() self.tableView.dataSource = self self.tableView.delegate = self } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ let cell = UITableViewCell() cell.textLabel?.text = items[indexPath.row] return cell } } |
上記のコードについての補足です。
“items”の中にテーブルに表示させたい項目を入力していきます。次に”UITableViewDelegate”と”UITableViewDataSource”プロトコルの追加します。 このままだと必須のメソッドが足りなくエラーが出てしまします。なのでその必須メソッドを記述していく必要があります。 “commandキー”を押しながら”UITableViewDataSource”をクリックし”Jump to Definition”を選択してください。
関連するメソッド一覧が出てきます。その中から”optional”が付いていないものが必須メソッドなので、この2つのメソッドをコピーして貼り付けてください。
1 2 3 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ } |
“numberOfRowsInSection”はテーブル内の行数を設定する必須メソッドです。今回は都道府県の数と同じ行数がほしいので
1 | return items.count |
と記述しitemsに格納されている数を取得します。
“cellForRowAt”はテーブル内にいれる項目を設定する必須メソッドです。
1 2 3 | let cell = UITableViewCell() cell.textLabel?.text = items[indexPath.row] return cell |
と記述しitemsに格納されている値を取得しテーブル内に埋め込みます。
以上でTableViewの簡易的な実装が完了しました。