2016-10-26 11 views
6

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

これは私の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(私は私の携帯を持っているクラス)である:

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 
    } 

} 

私はいつもストーリーボード上の表ビュー内のテーブルビューのセルを使用するが、私はXIBのアプローチを試してみたいです今。

セル識別子をセルXIBに追加して、dequeueReusableCellメソッドで呼び出すようにしました。

私は間違っていますか?私はアウトレットにデータソースデリゲートテーブルビューのしようとしたが、私はエラーがあった(と私は正しいステップではないと思う)。

答えて

33

あなたのnibオブジェクトを登録する必要があります。 viewDidLoad()

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

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

あなたはまた、セクション数を返す必要があります:すべての

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 
+0

あなたはセル識別子を意味しますか? だから、のViewControllerに私はちょうど置く必要があります: tableView.register(ペン先、forCellReuseIdentifier: "セル") は、ペン先= UINib(:: "セル"、バンドルゼロnibName)を聞かせて?それは仕事をしなかった。私の細胞はまだ空です。 – Adrian

+2

申し訳ありませんが、実際にあなたのnibファイルの名前を意味していました。あなたのケースでおそらく "CellTableView"である必要があります... – eLwoodianer

+0

私は参照してください。ありがとうサム。今働いている。 – Adrian

2

まず、あなたはあなたのペン先オブジェクトを登録する必要があります。

yourTable?.register(UINib(nibName: "yourCustomCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier") 
関連する問題