質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

3497閲覧

TableViewCellにおける定数の初期化について

kosaji532

総合スコア7

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/04/14 08:32

現在、SwiftにてiOSアプリの開発をしています。
UITableViewを使用した画面を作成中なのですが、
その中でTableViewCellのおける定数の正しい初期化方法が分からず困っています。


やりたいこととしては、単純にCellにテキストラベルを設定したいだけなのですが、
その処理をUIViewController.cellForRowAtIndexPathメソッド以外で初期設定を行いたいのです。

Cell情報の設定処理は調べてみると、大抵は以下のようなcellForRowAtIndexPathメソッドで行うコードです。

swift

1 2 private let textList = ["a","b", "c"] 3 4 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 5 let cell = UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: "cell") 6 7 // テキストラベルの設定 8 cell.textLabel?.text = textList[indexPath.row] 9 return cell 10 }

私の認識では、cellForRowAtIndexPathメソッドは
Cellが再描画される度にこのメソッドが呼ばれると思っています。
しかし、上記のような固定文字列のテキストラベルの設定処理は
ビルド後は不変のため、再描画されるたびに処理が実行されるのが望ましくないと感じています。
そこで、cellForRowAtIndexPath以外で定数設定を行いたいのですが、
そういったことは可能なのでしょうか。


  • 開発環境

Swift 4.1
Xcode 9.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

コードに配列が書いてあると、ついついDynamic Prototypeを連想してしまいますが、
アプリの設定画面のようなものを作成するならば、スタティックセルを使うと良いと思います。
https://dev.classmethod.jp/references/ios-8-staticcells/

投稿2018/04/15 03:27

編集2018/04/15 03:45
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

storyboardをご利用されているのでしたら、カスタムセルを使用してその中にUILabelを用意して固定の値を設定するのはいかがでしょうか?(イメージ見づらかったらすいません。)

イメージ説明

イメージ説明

【追記】Static Cellsを使用した例を追記しました。

イメージ説明

イメージ説明

投稿2018/04/14 21:46

編集2018/04/15 06:05
newmt

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kosaji532

2018/04/15 03:18

分かりやすいイメージとともにご回答ありがとうございます。 私の説明足らずでしたが、 複数のセルに同じ文字列を表示させるのではなく、 固定の配列を順番に表示させてみたいです。 そのためにはIndexPathが必要だとは思いますが、 セルの順序や個数も不変でも実現できないでしょうか。
newmt

2018/04/15 06:06 編集

質問内容を勘違いして失礼しました。固定なのでしたらStatic Cellsで良いと思います。一応画像を追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問