[解決済み] UITableViewのSwift用サンプル
質問
SwiftとiOSを使い始めて数ヶ月になります。私は物事が行われる方法の多くに精通していますが、私は見ずに物事を書き上げることができるほど上手ではありません。私は過去に Stack Overflow が、私が錆び付いてしまったトピックを軌道に乗せるために迅速な回答を提供してくれたことに感謝しています (例えば。 AsyncTask Android の例 ).
iOSの
UITableView
は、私にとってはこのカテゴリーに入ります。何度かやったことがあるのですが、細かいところは忘れてしまいました。StackOverflowで基本的な例を求めるだけの他の質問を見つけることができず、オンラインにある多くのチュートリアルよりも短いものを探しています(ただし
これ
は非常に良いですが)。
私の将来の参考のため、またあなたのために、以下に回答を提供します。
どのように解決するのですか?
以下の例は 長い記事 をWe❤Swiftから適応させたものです。このような感じになります。
新しいプロジェクトを作成する
通常のSingle View Applicationでよい。
コードの追加
を置き換える ViewController.swift のコードを以下に置き換えます。
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// Data model: These strings will be the data for the table view cells
let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]
// cell reuse id (cells that scroll out of view can be reused)
let cellReuseIdentifier = "cell"
// don't forget to hook this up from the storyboard
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Register the table view cell class and its reuse id
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
// (optional) include this line if you want to remove the extra empty cell divider lines
// self.tableView.tableFooterView = UIView()
// This view controller itself will provide the delegate methods and row data for the table view.
tableView.delegate = self
tableView.dataSource = self
}
// number of rows in table view
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.animals.count
}
// create a cell for each table view row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// create a new cell if needed or reuse an old one
let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as UITableViewCell!
// set the text from the data model
cell.textLabel?.text = self.animals[indexPath.row]
return cell
}
// method to run when table view cell is tapped
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You tapped cell number \(indexPath.row).")
}
}
コード内のコメントを読んで、何が起こっているのかを見てみましょう。ハイライトは
-
ビューコントローラは
UITableViewDelegate
とUITableViewDataSource
プロトコルを使用します。 -
は
numberOfRowsInSection
メソッドはテーブルビューに存在する行の数を決定します。 -
は
cellForRowAtIndexPath
メソッドは各行を設定します。 -
は
didSelectRowAtIndexPath
メソッドは、行がタップされるたびに呼び出されます。
ストーリーボードにテーブルビューを追加する
をドラッグして
UITableView
をビューコントローラにドラッグします。オートレイアウトで4辺を固定します。
アウトレットを接続する
制御
IB のテーブルビューからドラッグして
tableView
のアウトレットにドラッグします。
終了しました
以上です。これでアプリを実行できるはずです。
この回答は、Xcode 9とSwift 4でテストされました。
バリエーション
行削除
ユーザが行を削除できるようにしたい場合は、上記の基本プロジェクトにメソッドを1つ追加するだけです。以下を参照してください。 この基本的な例 を参照してください。
行間
行間を空けたい場合は、以下を参照してください。 この補足の例 .
カスタムセル
テーブルビューのセルのデフォルトレイアウトは、あなたが必要とするものではない可能性があります。 この例をチェックアウトする を参照して、独自のセルを作成するのにお役立てください。
動的なセルの高さ
すべてのセルが同じ高さであることを望まない場合があります。iOS 8 からは、セルの内容に応じて高さを自動的に設定することが簡単にできるようになりました。 この例を参照してください をご覧ください。
詳しい説明
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] iOS 13 のフルスクリーンでモーダルを表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] AsyncTaskのAndroidサンプル
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み】Swiftで簡単なコレクションビューを作成する方法