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

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

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

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

Swift

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

Q&A

解決済

1回答

1701閲覧

UITableViewControllerのcellForRowAtメソッドが呼ばれない

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/03/16 09:19

UITableViewControllerのcellForRowAtメソッドが呼ばれなくなりました。
呼べていたときもあったのですが、何かの修正が影響したのか、呼ばれなくなりました。
どなたか原因わかる方がいたらお教え願いたいです。
確認すべき点ももうよくわからないので困っています。(下部にこれまで確認したことを記載しました)

Storyboardはこのように作っています。
エントリーポイントのViewにContainerViewを2つ置いて、1つはnavigationController、もう一つはTableViewControllerをEmbedしています。
この状態でナビゲーションとContainerに直接配置している歯車アイコンは表示されるのですが、Tableが一切表示されなくなってしまいました。

イメージ説明
イメージ説明

TableViewControllerのソースは以下の通りです。

var meals = [Meal]() override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return meals.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // このメソッドが呼ばれなくなりました guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MealTableViewCell else { fatalError("The dequeued cell is not an instance of MealTableViewCell") } // Fetches the appropriate meal for the data source layout. let meal = meals[indexPath.row] cell.mealLabel.text = meal.name cell.photoImageView.image = meal.photo cell.ratingControl.rating = meal.rating return cell }

###ここまで試したこと、確認したこと
numberOfSections, tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Intのreturn値が0ではないか?
->デバッグして確認しましたが、0ではありませんでした。

ContainerViewのサイズが小さすぎてTableViewが表示できない、メソッドも呼ばれないのではないか?
->幅も高さも十分に取っており、問題なさそうです。もしかしたら制約の付け方がおかしいなどというのはあるかもしれませんが、歯車アイコンが表示されているので表示範囲の問題ではなさそうな気がします。。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

制約誤りでした。
幅が750で表示されていたので安心してしまっていたのですが、
左と右の制約をかけたら表示されるようになりました。

投稿2018/03/16 09:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問