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

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

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

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

Swift

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

Q&A

解決済

2回答

567閲覧

SwiftでカスタムセルをBuildしようとするとエラーが出る

sunglass

総合スコア303

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/04/17 06:27

編集2020/04/17 10:19

・Swift カスタムセルを再利用したtableViewの作り方 [初級向け]
https://qiita.com/pe-ta/items/116a2199b1f872ac6471
の記事通りに進めるとViewController.swiftのreturn cellの箇所で下記のエラーが出ます。

Cannot convert return expression of type 'CustomCellController' to return type 'UITableViewCell'

内容は
UITableViewCellを返さないといけないのにCustomControllerを返している
と。

コードの内容をちゃんと理解しきれていないレベルです。。
詳しい方いましたらよろしくお願いします。

ViewController

1 2 3import UIKit 4 5class ViewController: UIViewController , UITableViewDelegate , UITableViewDataSource { 6 7 @IBOutlet weak var myTable: UITableView! 8 9 override func viewDidLoad() { 10 myTable.register (UINib(nibName: "CunstomCellController", bundle: nil),forCellReuseIdentifier:"reusnableCell") 11 } 12 13 14 // セルの数を宣言 15 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 16 return 10 17 } 18 19 // セルの数を決める 20 func tableView(_ tableView: UITableView, cellForRowAt cells: IndexPath) -> UITableViewCell { 21 22 let Cell = tableView.dequeueReusableCell(withIdentifier: "reusnableCell", for: cells) as! CustomCellController 23 24 Cell.CellViewController (CountRows:cells) 25 return Cell // ←ここでエラーが出る 26 } 27} 28

CustomCellController

1import UIKit 2 3class CustomCellController: UIViewController { 4 5 @IBOutlet weak var tableImage: UIImageView! 6 7 @IBOutlet weak var tableLabel: UILabel! 8 9 func CellViewController(CountRows:IndexPath){ 10 11 self.tableLabel.text = String((CountRows.row)+1) 12 self.tableImage.image = UIImage(named: "meal.jpg") 13 } 14} 15 16

Build
イメージ説明

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

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

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

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

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

guest

回答2

0

クラスの継承を理解されてないのではないでしょうか。
tableViewで
func tableView(_ tableView: UITableView, cellForRowAt cells: IndexPath) -> UITableViewCell
と書いてあるので、UITableViewCellクラスか、それを継承したクラスを返さないといけません。
よって、カスタムCellクラスは、UITableViewCellを継承するのだと理解できないとダメです。

投稿2020/04/17 06:44

freemann

総合スコア264

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

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

0

ベストアンサー

swift

1class CustomCellController: UIViewController {

↑これがUITableViewCellのサブクラス(カスタムクラス)ならば、↓こうしてください。

swift

1class CustomCellController: UITableViewCell {

それと、名前には意味があるので名前をつける際にはきちんとつけてあげてください。
犬に「ネコ」って名前つけて呼んでたらみんな混乱するし、自分も混乱すると思わない?

投稿2020/04/17 06:35

編集2020/04/17 06:35
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sunglass

2020/04/17 10:14

class CustomCellController: UITableViewCell { ...}に修正して UITableViewCellを継承する形に修正しました。 Buildするとデフォルトのテーブルビューしか表示されません・・・ カスタムセルクラスとViewControllerが上手く紐づいてないという事でしょうか・・・?
sunglass

2020/04/17 10:20

(命名規則修正しました。。。慣れていないのでそのまま記事通り『日本語』でクラス名つけました)
退会済みユーザー

退会済みユーザー

2020/04/17 10:38

デリゲートメソッド(cellForRowAt)を書き換えているので、元のまま使ってください。 それと、これでエラーが出てないということは、デリゲートの設定もされていないと思われます。
sunglass

2020/04/17 11:03

>元のまま使ってください。 こちら全て記事のコードに置き換えました。 (@IBOutlet...なども一から設定し直しました) >デリゲートの設定もされていないと思われます。 デリゲートの設定がまだよくわかりません。。
sunglass

2020/04/18 11:18

無事解決しました、、、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問