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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

644閲覧

カスタムセルが一つの端末でしか表示されない

Ka_ya_

総合スコア31

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2020/04/21 03:35

編集2020/04/21 05:43

質問失礼します。
テーブルビューにカスタムセルを並べて表示させたいと思い、
下記の様にコードを記載いたしました。(実装の為に追加したコードのみ引用)

開発の基盤として使用しているiPhone8のシミュレーターだと正しく表示されましたが、
その他端末のシミュレーターではデフォルトのテーブルビューが表示されてしまい、
表示させるべきデータなども反映されておりません。
全ての端末で正しく表示させる様にするにはどうすれば良いのでしょうか。

どなたかご教授いただけますと嬉しいです。
よろしくお願い致します。

カスタムセル

swift

1import UIKit 2 3class TableViewCell: UITableViewCell { 4///タイトル表示用のラベル 5 @IBOutlet weak var titleListLabel: UILabel! 6 7 override func awakeFromNib() { 8 super.awakeFromNib() 9 } 10 11 override func setSelected(_ selected: Bool, animated: Bool) { 12 super.setSelected(selected, animated: animated) 13 } 14}

呼び出し元のviewController

swift

1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 self.tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "cell") 5 6 7 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 8 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell 9}

viewDidLoad付近

swift

1 override func viewDidLoad() { 2 ///テーブルビュー 3 @IBOutlet weak var tableView: UITableView! 4 5 6 ///realmの生成 7 var realm = try! Realm() 8 ///登録されているデータの全件取得用変数 9 var records: Results<Records>! 10 ///検索バーの生成 11 let searchBar: UISearchBar = UISearchBar() 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 self.tableView.dataSource = self 17 self.tableView.delegate = self 18 19 self.tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "cell") 20 21 //登録されているデータを全件取得する 22 records = realm.objects(Records.self) 23 24 //検索バーをナビゲーションバーに表示 25 self.navigationItem.titleView = searchBar 26 searchBar.delegate = self 27 searchBar.placeholder = "タイトルで探す" 28 searchBar.tintColor = UIColor.black 29 } 30 31

テーブルビューに配置しているセル

カスタムセル

カスタムセルのxib

テーブルビュー

iPhone8
iPhone11

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

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

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

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

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

hoshi-takanori

2020/04/21 03:55

Storyboard で table view に prototype cell を持たせる場合、self.tableView.register() は不要です。
Ka_ya_

2020/04/21 04:02

ご回答ありがとうございます。 すみません、xibファイルで用意しているカスタムセルの方を使用したかったので Storyboardにあるprototype cellを削除いたしましたが、 やはりiPhone8のみでしかカスタムセルは適用されませんでした。
hoshi-takanori

2020/04/21 04:20

なるほど。とりあえず cellForRowAt にブレークポイントを仕掛けて、ちゃんと呼ばれてるか確認してみては。
Ka_ya_

2020/04/21 04:33

たびたびすみません、ありがとうございます。 確かめたところ、 iPhone8ではcellForRowAtが呼ばれていたのですが、 その他の端末では呼ばれていませんでした。 特定の端末のみでしか呼ばれなくなる様に間違えてしてしまっているのでしょうか。
hoshi-takanori

2020/04/21 04:38

謎ですね。画面サイズか、iOS のバージョンか、端末によってデータが違うか、でしょうか…。
Ka_ya_

2020/04/21 04:48

ご確認いただきありがとうございます。 端末によって変わるというのが良く分からないですよね… どなたかにご回答をいただけるまで、自分でも色々と試してみようと思います! 何度もすみません、ありがとうございました^^
guest

回答1

0

ベストアンサー

iPhone8で表示できて、他の端末で表示できないとなると、通常はレイアウトの問題だと思います。
iPhone8で表示できているtableViewの背景色を設定して、他の端末で表示するとどうなりますか?
表示できる場合と、表示できない場合の画像を乗せてくれるとありがたいです。
それと、他端末というのはたとえばどれでしょうか?iPhone8以外の全部ということでも検証などを単純化するため便宜上、表示できない端末を一つにしていただけると楽になると思います。
その一つで表示ができたら他の端末のことをかんがえるといった流れで…


追記
追記・修正依頼を読み、質問文の画像にsegmentedControlがあることから引っかかるのですが、
iPhone8で試した際に、フラグのようなものをUserDefaultに保存してませんか?で、
他端末では保存されていないという…
これだと他端末で表示されないといった部分の理由としては納得がいく答えになると思います。


追記

たんじゅんにrealmにデータが入ってないだけかと思いますが。

numberOfRowsInSectionの中でセルの数をプリントしてコンソールに表示されている数を教えて下さい。

print(array.count)とか。

それと、
tebleViewの背景を青とか黄色にしてください。たぶんlightModeで表示だから問題ないと思いますが。
iPhone8のtableViewの背景が見えるようにセルの数を減らしてください。(これもたぶん問題ないと思いますが念の為。)

投稿2020/04/21 05:15

編集2020/04/21 05:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Ka_ya_

2020/04/21 05:48

ご回答ありがとうございます! tableViewの背景を黒にした際は、 画像の様にその他の端末でも反映されました。(iPhone11,iPadPro12.9にて確認) segmentedControlは配置をしているもののviewControllerには未接続となっており、 データの保存に関してはRealmから登録されているデータを全件取得のみで使用しています。 その他気づかないうちに何か保存や設定をしてしまっているのかもしれないのですが、 どこを確認すれば良いのか分からず困っています… お手数ですが追記した内容をご確認いただけますと助かります。 よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2020/04/21 06:01

念の為、こっちにも、 表示するデータが入ってないんじゃないですか?
Ka_ya_

2020/04/21 06:07

ご回答ありがとうございます。 教えていただいた通りにnumberOfRowsInSectionの中でデータを確認したら入っておらず、 データを登録し直したら表示される様になりました! 初歩的なミスで申し訳ありません。 どこが悪いか見当も付けられなかった為、とても助かりました! 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問