0

いくつかのUIButtonをロードして動的タグを与えるテーブルビューがありますが、UIButtonのtag = 0は更新されません。どこが間違っているのか理解できませんでした...

int i=-1;
    @synthesize......

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

     btnTemp = [[UIButton alloc]initWithFrame:CGRectMake(10,lblName.frame.origin.y+lblName.frame.size.height+3,17, 17)];     
     [btnTemp addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
     btnTemp.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    [btnTemp setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
     btnTemp.titleLabel.font =[UIFont systemFontOfSize:14.f];
     btnTemp.tag=++i;
     return cell;

}

しかし、初めてこのメソッドに入ると、UIButtons タグの値が 0 に更新されません。

-(IBAction) btnClicked:(UIButton *) sender{


    UIButton *button = (UIButton *)sender;
    NSLog(@"%d", [button tag]);
    UIButton  *btnTemp = (UIButton*)[cell viewWithTag:0]; //Here UIButton is being converted to UItableViewCell  and getting error.
   [buttonsinaSection addObject:btnTemp];
}

どこが間違っているのでしょうか..?

4

3 に答える 3

0
-(void) btnClicked:(UIButton *) sender
{
    NSLog(@"%d", [sender tag]);
    [buttonsinaSection addObject:sender];
}


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

     btnTemp = [[UIButton alloc]initWithFrame:CGRectMake(10,lblName.frame.origin.y+lblName.frame.size.height+3,17, 17)];     
     [btnTemp addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
     btnTemp.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    [btnTemp setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
     btnTemp.titleLabel.font =[UIFont systemFontOfSize:14.f];
     btnTemp.tag=indexpath.row;
     return cell;

}

ねえ、再び btnClicked アクションで ViewWithTag:0 を取得しています。したがって、ビューのデフォルトでは、すべてのオブジェクトにタグ = 0 が設定されます。したがって、btnClicked でボタン インスタンスを取得します (UIButton * ) 言う

于 2013-04-13T06:16:47.067 に答える
0

のデフォルト値は 0 です。これは、何かが変更されない限りtag、ビュー階層内のすべてのビューの が 0 であることを意味します。tagこれには、そのテーブル ビューのあなたUITableViewとすべてが含まれます。UITableViewCellしたがって、たとえば、[cell viewWithTag:0]a を呼び出すとUITableViewCell、セルをtag0 以外に変更しない限り、セルはそれ自体を返します。

tagビュー階層を厳密に制御できない限り、値 0 を使用して特定のボタンやその他のビューを見つけようとすることは、まったく不可能です。UITableViewまたはを使用している場合、これらのビューのそれぞれにプライベート サブビューがあり、値が 0UITableViewCellである可能性があるため、十分な制御ができません。tag

于 2013-04-13T06:25:31.170 に答える