[Swift] tableview でエラーは出てないのにセルに値が反映されない時にまず確認したいこと

2018年9月6日ITSwift

オーバーライドしているメソッドが “numberOfSections” ではなく、”numberOfRowsInSection” になっているか確認しましょう。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        
        if let todo = todos?[indexPath.row]
        {
            cell.textLabel?.text = todo.title ?? "No Todos Added Yet"
        }
        
        return cell
    }

        // こっちか〜い!    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return todos?.count ?? 1
    }

不正解:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        
        if let todo = todos?[indexPath.row]
        {
            cell.textLabel?.text = todo.title ?? "No Todos Added Yet"
        }
        
        return cell
    }
        
        // 節子!それ "numberOfSections" や! "numberOfRowsInSection" やない!
    func numberOfSections(in tableView: UITableView) -> Int {
        return todos?.count ?? 1
    }

こんなことにハマって、限られた人生の時間を無駄にすることのないよう心よりお祈り申し上げます。m(_ _)m

tableView を実装したら、numberOfRowsInSection って必須なんですが、、

tableview-cell-not-working1.png

numberOfSections が セクションの数
numberOfRowsInSection は セクションの中の列の数、、、ですね。

https://developer.apple.com/documentation/uikit/uitableviewdatasource/1614931-tableview
https://developer.apple.com/documentation/uikit/uitableviewdatasource/1614860-numberofsections

よくよく読めばわかるのですが、ややこしくないです?

ぼくだけですかね?ハマったの?

スポンサーリンク

Posted by nobuhiro harada