web-dev-qa-db-ja.com

Swift 3のXibからのセル

このテーマに関するビデオをすでに読んで見ましたが、うまくいきません。ストーリーボードの代わりにxibからセルにしようとしています。

これが私のViewControllerです(ここにはテーブルビューがあります)。

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet var tableView: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return 5
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CellTableView

        cell.test.text = "A";

        return cell;

    }

}

これは私のCellTableView(私が自分のCellを持っているクラス)です:

import UIKit

class CellTableView: UITableViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    @IBOutlet var teste: UILabel!

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

StoryBoardのテーブルビュー内で常にテーブルビューセルを使用しましたが、XIBアプローチを今すぐ試したいと思います。

DequeueReusableCellメソッドで呼び出すために、セルXIBにcell識別子を追加しました。

何が間違っているのでしょうか? Table ViewのdataSourcedelegateをアウトレットにしようとしましたが、エラーが発生しました(正しい手順ではないと思います)。

12
Adrian

ペン先オブジェクトを登録する必要があります。

viewDidLoad() ::

let nib = UINib(nibName: "nameOfYourNibFile", bundle: nil)

tableView.register(nib, forCellReuseIdentifier: "yourIdentifier")

セクションの数も返す必要があります。

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
45
eLwoodianer

まず、nibオブジェクトを登録する必要があります。

yourTable?.register(UINib(nibName: "yourCustomCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier")
1
Prabhat Pandey