0

BVReorderTableView https://github.com/bvogelzang/BVReorderTableViewを使用して、テーブルビューの行を並べ替えました。しかし、問題があります。各行に UIButton を追加すると、このボタンは常にクリアな色で表示されます。行を選択すると、このボタンが表示されます。

私はこのコードを試しました:

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

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell;

    cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UIButton *prioritybtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        [prioritybtn setFrame:CGRectMake(220, 0, 70, 32)];
        [prioritybtn setTag:4000];
        [cell.contentView addSubview:prioritybtn];

    }
     UIButton *priorityButton = (UIButton*)[cell.contentView viewWithTag:4000];
    if ([[items objectAtIndex:indexPath.row] isKindOfClass:[NSString class]] &&
        [[items objectAtIndex:indexPath.row] isEqualToString:@"DUMMY"]) {
        cell.textLabel.text = @"";
        cell.contentView.backgroundColor = [UIColor clearColor];
        prioritybtn.hidden= YES;
    }
    else {

       cell.textLabel.text = [items objectAtIndex:indexPath.row];
        [priorityButton setSelected:NO];
        [priorityButton setTitle:@"Priority" forState:UIControlStateNormal];
        priorityButton.enabled = YES;
    }

    return cell;
}

また、最初の行でのみボタンを非表示にしたいのですが、他の行はまだ表示されています。どうやってやるの?ありがとう

4

3 に答える 3

3

最初の行のボタンを非表示にするには:

    if (indexPath.row == 1){
      prioritybtn.hidden = YES;
      prioritybtn.userInteractionEnabled = NO;
    } else {
      prioritybtn.hidden = NO;
      prioritybtn.userInteractionEnabled = YES;
}

これを前に追加return cell;

色に関しては、ボタンを初期化する場所にこれを追加します。

 UIButton *prioritybtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    prioritybtn.backgroundColor = [UIColor greenColor]; //put the color you want
于 2013-11-11T08:35:06.677 に答える
0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell;
    UIButton *reletedbtn=nil;
    UILabel *Nameoflb=nil;

    cell = [tableeample dequeueReusableCellWithIdentifier:CellIdentifier];
      if (cell == nil)
      {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }
    Nameoflb = [[UILabel alloc] initWithFrame:CGRectMake(0,0,200,40)];
    Nameoflb.backgroundColor=[UIColor clearColor];
    Nameoflb.textAlignment=NSTextAlignmentCenter;
    Nameoflb.textColor=[UIColor blackColor];
    [Nameoflb setFont:[UIFont fontWithName:@"Helvetica-Bold" size :14]];
    Nameoflb.text=[dataarray objectAtIndex:indexPath.row];
    [[cell contentView] addSubview:Nameoflb];
    if (indexPath.row!=0)
    {
        reletedbtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
        reletedbtn.frame=CGRectMake(Nameoflb.frame.origin.x+Nameoflb.frame.size.width, Nameoflb.frame.origin.y+10,40, 25);
        reletedbtn.tintColor=[UIColor redColor];
        [reletedbtn setTitle:@"butoon" forState:UIControlStateNormal];

        //[reletedbtn addTarget:self action:@selector(statusMasseage:) forControlEvents:UIControlEventTouchUpInside];
        //reletedbtn.tag=1;
        [[cell contentView] addSubview:reletedbtn];

    }


    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;

}
于 2013-11-11T09:45:25.240 に答える
0

このようにしてみてください:-

 cell.selectionStyle = 
  UITableViewCellSelectionStyleNone;
于 2013-11-11T09:04:24.563 に答える