-1

私が直面している問題は、UItableビューでコントローラーをセグメント化し、インデックス0を選択していることです。これは、ボタンを表示していると想定しています(そして完全に機能しています)。問題は、インデックス1を選択し、テーブルビューの内容が変更された場合、ここのボタンをすべて削除する必要があることです。これらのステートメントを追加すると、最後のセルのボタンのみが削除されます

これらのステートメントは、最後のセルのボタンを削除するだけです

        [cell willRemoveSubview:downloadButton];
        [downloadButton removeFromSuperview];
        downloadButton.hidden=YES;

-(void)configureCell: (UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    downloadButton = [UIButton buttonWithType:UIButtonTypeCustom] ;
    [downloadButton setFrame:CGRectMake(250,8,30,30)];
    [downloadButton setTag :indexPath.row];
    [downloadButton setImage:[UIImage imageNamed:@"DownloadLesson.png"] forState:UIControlStateNormal];
    [downloadButton addTarget:self action:@selector(cellButton:) forControlEvents: UIControlEventTouchUpInside];

    if (segOL.selectedSegmentIndex==0) {
        [cell addSubview:downloadButton];
    } else {
        [cell willRemoveSubview:downloadButton];
        [downloadButton removeFromSuperview];
        downloadButton.hidden=YES;
    }
}
- (IBAction)cellButton:(id)sender {

    UIButton *play = sender;   
    NSLog(@"Number of row %d", play.tag]);
}
4

1 に答える 1

0

removefromsuperview を呼び出すと、downloadButton がビューに追加されることはありません。セルを使用するたびに新しく作成されます。ボタンがどんどん増えていく

新しいボタンを作成して古いボタンを忘れるのではなく、古いボタンを保存する必要があります:)

例えば:

@interface CellClass : UITableViewCell {
    UIButton *downloadButton;
}

...

-(void)configureCell: (UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    if(!downloadButton) {
        downloadButton = [UIButton buttonWithType:UIButtonTypeCustom] ;
        [downloadButton setFrame:CGRectMake(250,8,30,30)];
        [downloadButton setTag :indexPath.row];
        [downloadButton setImage:[UIImage imageNamed:@"DownloadLesson.png"] forState:UIControlStateNormal];
        [downloadButton addTarget:self action:@selector(cellButton:) forControlEvents: UIControlEventTouchUpInside];
    }        
    if (segOL.selectedSegmentIndex==0) {
        [cell addSubview:downloadButton];
    } else {
        [cell willRemoveSubview:downloadButton];
        [downloadButton removeFromSuperview];
        downloadButton.hidden=YES;
    }
}
- (IBAction)cellButton:(id)sender {

    UIButton *play = sender;

    NSLog(@"Number of row %d", play.tag]);
}
于 2012-12-09T10:43:36.787 に答える