0

私はuitableviewを使用していますが、cellforrowデリゲートで問題に直面しています。このコードを使用します

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"mycell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
    cell =  (CustomCell *)[topLevelObjects objectAtIndex:2];
    cell.btn_Selected.hidden=YES;
    cell.btn_Selected.tag=indexPath.row+1;

    [array_btnContainer addObject:cell.btn_Selected];

}

私の問題は、アプリを実行するとテーブルビューが読み込まれてセルが作成されることですが、テーブルビューをスクロールするともう1つのセルが作成されるのはなぜですか???? 既に作成されたセルを再利用し、(cell==nil) ブロックに入らないようにする必要がありますが、スクロールするたびに 1 つのセルが作成され、他のセルが再利用されるのはなぜですか???? ハマった

4

2 に答える 2

0

CustomCell.m では、次のメソッドを次のようにオーバーライドする必要があります。

-(NSString*) reuseIdentifier{
       return @"mycell";
 }
于 2012-09-09T15:00:24.420 に答える
0

これは、次の手順に従って実現できます

  1. テーブルビューを表示するために使用しているCustomCellの参照を.hファイルに作成し、それをShowTableView.hと呼びます。IBOutlet CustomCell *セル;

  2. CustomCell.xib に移動し、ファイル所有者を選択してから、クラス プロパティを ShowTableView に設定します。

  3. CustomCell でセル参照を添付

  4. CustomCell を選択し、mycell でプロパティ識別子の値を設定します

  5. ShowTableView.m ファイルに移動し、cellForRowAtIndexPath メソッドに次のコードを配置します。

     -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:      (NSIndexPath *)indexPath
    {
    
    static NSString *kCellIdentifier = @"mycell";
    cell =(CustomCell *)[tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
    if (!cell)
    {
    [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];      
    }  
    }
    

これで、以前のセルが再利用されます

于 2012-09-10T09:48:01.220 に答える