0

UITableViewCell に UISwitch、UILabel、およびいくつかのボタンを配置しましたが、UISwitch がステータスを変更したときに適切に反応する (表示/非表示) 必要があります。

私の問題は、UISwitch が配置されているこの特定のセルではなく、上記の UILabel とボタンが非表示になっており、ランダムなセルから発生していることです。

私はこれまでに行きました:

-(void)hideQualityBtn:(id)sender
{
if(sender.tag==9001)
{
    UITableViewCell *cell=((UITableViewCell*)[sender superview]);
   // cell.control.....hidden=YES;
}
}

どうぞよろしくお願いいたします。

編集:

cellForRowAtIndexPath で

self.switchView = [[UISwitch alloc] initWithFrame:CGRectMake(7, 8, 79, 27)];
[switchView addTarget:self action:@selector(setItem:) forControlEvents:UIControlEventValueChanged];
[switchView setTag:9001];
[cell addSubview:switchView];
[cell setIndentationWidth:45];
[cell setIndentationLevel:1];

setItem メソッド:

-(void)setItem:(UISwitch*)sender
{
int n;
UITableViewCell *cell;
// so i'm getting item ID
if(sender.tag==9001)
{
    cell=((UITableViewCell*)[sender superview]);
    n=([self.tableView indexPathForCell:cell].row);
}
item=[self.arr objectAtIndex:n];

NSDate *today=[NSDate date];
NSDateFormatter *formatter =[[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
NSString *now =[formatter stringFromDate:today];

if(sender.on)
{
    DBAccess *access=[[DBAccess alloc]init];
    [access setItemON:item.itemID date:now];
    qualityBtn.hidden=NO;
    [qualityBtn setTitleColor:[UIColor blackColor] forState:normal];
    [qualityBtn setTitle:@"UNDEF" forState:normal];
}
else 
{
    DBAccess *access=[[DBAccess alloc]init];
    [access setItemOFF:item.itemID];
}
}

私の特定の質問は、特定のセルにあるコントロールを指す方法ですか?

4

1 に答える 1

0

tableview:cellForRowAtIndexPath: の実装で UITableViewCell をセットアップし、興味深いイベントが発生したときにアクセスできるように、UISwitch への参照 (おそらくプロパティ内) を保持する必要があります。

于 2012-05-05T13:59:25.243 に答える