2016-02-01 19 views
5

複数のUITableViewCellサブクラス間でxibを共有するにはどうすればよいですか?複数のUITableViewCellサブクラスで同じxibを使用していますか?

これらはすべて同じ表示インターフェースを持っていますので、セルクラスを変更するために同じxibを複数回複製する必要はありません。 BaseCellのサブクラスである - 私が代わりにここで必要なもの

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView registerNib:[UINib nibWithNibName:@"BaseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"BaseCell"]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BaseCell *baseCell = [tableView dequeueReusableCellWithIdentifier:@"BaseCell" forIndexPath:indexPath]; 

    ... 

は私ChildCellのインスタンスです。何か案は?

+0

クラスの構造を変更する方がよいでしょう。セルの状態を追加し、セルの現在の状態に応じて応答することも別の選択肢です。 – meth

答えて

1

継承ではなくコンポジションを使用します。 BaseCellクラスとそれがnibのセルの間に1-1の関係を保ち、デキューした後に作成してセルオブジェクトに追加する実装オブジェクトのプロパティを追加します。

1

複数のセルに同じxibを使用する方法はありません。

しかし、すべてのセルが使用するxibの部分を分けることができます。

各セルで、このクラスのサブビューにサブビューを設定し、すべてのセルに対してこのビューを再利用できます。

あなたはこの例のための私のイメージを見ることができます:

まずセル:

enter image description here

第二の細胞: enter image description here

そして、二つの細胞の使用をサブビュー:

enter image description here

これで、重複したxibを必要とせず、この部分のUIを再利用できます。