2012-10-05 5 views
5

私はUITableViewCellから継承したカスタムテーブルセルを持っています。それは正常に動作しています。iOSプロジェクトでXIBファイルを継承する方法は?

ここでは、ほとんど変更を加えずに他の画面に同じ種類のセルを作成する必要があります。私は古いセルクラスを継承してデザインとロジックを再利用することを計画していましたが、xibファイルを継承する方法を見つけることができませんでした。

1つのxibからすべてのビューを他のものにコピー/ペーストする必要がありますか、それともいくつかの変更を加えて拡張する方法がありますか?

編集:私は、次の質問を読んでいると、彼らはそのない可能今と主張している:

、我々はどのようなアプローチを使用する必要があります効果的にこれを行う?

答えて

0

ファイルを複製し、必要な変更を加える必要があります。

ありがとうございました

+0

OOのコンテキストで考えると、私は重複を避けようとしていました。 – Ans

0

プログラムでは実行できないことは何もありません。最も簡単なパスは、(通常)コード全体に移動し、すべてのターゲット/プロジェクトからXIBを削除することです。次に、好きなようにサブクラス化することができます。

これにより、複数のターゲットのリソース管理が非常に簡単になります。

コードに移動する代わりに、変更可能な部分を他のインスタンス(セルが保持/参照)に移動することができます。コントローラは、プレゼンテーションの前にこの属性を設定できます。したがって、いくつかの点でデザインや描画が特別なものやカスタマイズ可能なものだった場合は、そのロジックをXIBの逆シリアル化に依存しないクラス階層に移動し、それらの部分をペン先で定義したセルのプロパティにします。

0

問題の解決策を探している場合は、プログラムでカスタムセルを作成することをお勧めします。

私はあなたを段階的に説明しています。これはあなたを助けるでしょう。

したがって、UITableViewCellから継承するクラスを作成し、必要なコンポーネントをtabelCellに追加します。

.hファイルは次のようになります。

// -------- ------- START >>

#import <UIKit/UIKit.h> 

@interface CustomCell : UITableViewCell{ 

UIButton *btn1; 
UIButton *btn2; 
UIButton *btn3; 

} 

@property(nonatomic , retain) UIButton *btn1; 
@property(nonatomic , retain) UIButton *btn2; 
@property(nonatomic , retain) UIButton *btn3; 

@end 

// ------- ------- END < <

とあなたのm個のファイルがこの

// -------- ------- START >>のようになります。

#import "CustomCell.h" 

    @implementation CustomCell 
    @synthesize btn1, btn2, btn3; 

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 

    //----frame the components as per your project req.----  

    btn1 = [[UIButton alloc] initWithFrame:CGRectMake(1, 1, 85, 70)]; 
    [self.contentView addSubview:btn1]; 

    btn2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 1, 85, 70)]; 
    [self.contentView addSubview:btn2]; 

    btn3 = [[UIButton alloc] initWithFrame:CGRectMake(195,1, 85, 70)]; 
    [self.contentView addSubview:btn3]; 
    } 
    return self; 
    } 

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    { 
    [super setSelected:selected animated:animated]; 

     // Configure the view for the selected state 
    } 

// -------- END- ------ < <

これで、このカスタムセルを他のクラスで再利用する準備が整いました。要件ごとに変更することもできます。 cellForRowAtIndexPathで今

>>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 

static NSString *CellIdentifier = @"Cell"; 

CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


if (cell == nil) 
{ 
    cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ; 
} 

    [cell.btN1 setImage:[UIImage imageNamed:@"YOUR IMAGE NAME"] forState:UIControlStateNormal]; // YOU CAN MAKE CHANGES HERE. 

    ................// remaining logic goes here 

return cell; 

} 

これはあなたを助けることを願っています。

1 .Also take a look on link tutorial.

2. A Closer Look at Table View Cells

+0

あなたは私の質問を読まなかったと思います。私はすでにUITableViewCellクラスから継承したカスタムセルを持っています。私はtableViewのカスタムセルを作る方法を知っています。 UITableViewCellから直接継承するのではなく、自分のカスタムセルクラスから継承する必要があります。重要なのは、xibファイルビューを再利用することです。 – Ans

0

あなただけのカスタムセルのビュークラスをサブクラス化しようとしていますか?そうすれば、すべてのUIコンポーネントの基本クラスにIBOutletを持たせることができ、新しいサブクラスでは、新しい動作ごとにIBOutletを管理できます。それはちょうど

0

のUIViewまたはのUIViewControllerなどをサブクラス化するようにそれはかつて私に起こったことだろうと私がやったことです:代わりにサブクラスの

私はcustomCellと別々UIView持つテーブルを作り、サブビューとしてそのビューを追加しました必要に応じてcustomCellのキーでcustomCellのUIを変更して、UIViewControllerがサブビューとして追加されているかどうかを知ることができました。

私はこのアプローチがどれほど良いか分かりませんが、まだ方法です:)

関連する問題