2017-05-23 8 views
1

は、私は多くのカスタムセル(XIBファイル+のUITableViewCellの迅速なサブクラス)を持っており、多くのシーンで、私は動的な細胞としてそれらを使用すると、すべてが(デキューなど、セルを登録する)に適しています。私はまた、これらの細胞を使用することができ、静的にtableViewを持っている必要がある場合カスタム静的細胞は、プログラム

私の問題が発生します。私は再利用性を失うと思いますので、私は、私は、これを達成するためにストーリーボードを使用したくないことはできません。

私は以下のようなものを試してみましたが、それは、プレーンUITableViewCellを示し代わりに私のXIB CustomCellに設計されています。それは、ペン先からの細胞のサブビューをロードしないように見えます。

private lazy var cells: [UITableViewCell] = [ 
    CustomCell1(), 
    CustomCell2(), 
    CustomCell3(), 
] 

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return cells.count 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    return cells[indexPath.row] 
} 

スタティックカスタムセルをプログラムで作成するにはどうすればよいですか?

EDIT @thedpの回答。カスタムセルはこのように設計されています。これはまさにその例です:

final class CustomCell: UITableViewCell { 
    @IBOutlet weak private var titleLabel: UILabel! 
    @IBOutlet weak private var textView: MyCustomTextView! 
    @IBOutlet weak private var doneButton: MyCustomButton! 
    func configureCell(with: ...) { ... } 
} 
+0

からそれらを割り当てることができますか?関心を示してくれてありがとう:)編集した – thedp

+1

@thedpトピック –

答えて

0

1)動的UITableViewの通常のようにセルを登録します。 UITableView

のデータソースを設定し

2) プライベート怠惰のvar細胞内

3)店舗・セル識別子:[UITableViewCellの]の代わりに、その後、

override func tableView(_ tableView: UITableView, 
    cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cellIdentifer = cells[indexPath.row] 
    let cell = tableView.dequeueReusableCell(withIdentifier: 
    cellIdentifer, for: indexPath) 
    return cell 
} 

またあなたに次に何を割り当てられた細胞

4) viewDidLoad()メソッドでセルをデキューして配列に格納できます。しかしdequeueReusableCellが必要とされ、あなたはちょうどあなたが `CustomCell`のコードを共有することができ、クラス