5

UITableViewCell から継承したカスタム テーブル セルがあります。それはうまくいっています。

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

すべてのビューを 1 つの xib から別の xib にコピー/貼り付けする必要がありますか、またはほとんど変更せずに拡張する方法はありますか?

編集:次の質問を読みましたが、現在は不可能であると主張しています:

それが不可能な場合、これを効果的に行うにはどのようなアプローチを使用する必要がありますか?

4

5 に答える 5

0

それは一度私に起こりました、そして私がしたことは:

サブクラス化する代わりに、UIViewcustomCellを使用して別のテーブルを作成し、必要に応じてそのビューをsubViewとして追加しました。customCellのキーを使用してcustomCellのUIを変更し、どちらがsubViewとして追加しているかを知ることができUIViewControllerました。

このアプローチがどれほど優れているかはわかりませんが、それでも方法はあります:)

于 2012-12-27T19:23:31.553 に答える
0

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

ありがとう

于 2012-10-05T06:02:02.747 に答える
0

カスタムセルビュークラスをサブクラス化してみましたか? このようにして、すべての UI コンポーネントの基本クラスに IBOutlets を配置し、新しいサブクラスで新しい動作に従って必要に応じてそれらを管理できます。UIView や UIViewController などをサブクラス化するようなものです。

于 2012-12-27T14:12:53.797 に答える
0

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

おまけとして、これにより、複数のターゲットのリソースの管理が大幅に簡素化されます。

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

于 2012-10-05T06:52:04.497 に答える
0

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

私はあなたを段階的に説明しています、これはあなたをより良くするのに役立ちます.

そのために、から継承するクラスを作成し、UITableViewCell必要なコンポーネントを tableCell に追加します。

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

//--------スタート------->>

#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 ファイルは次のようになります

//--------スタート------->>

  #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 .リンクチュートリアルもご覧ください。

2. テーブル ビュー セルの詳細

于 2012-10-05T06:59:48.773 に答える