如何灰显除选定的一个以外的所有tableview单元格

时间:2013-05-09 13:25:00

标签: iphone ios uitableview custom-cell

我有自定义单元格的表视图,自定义单元格上有uibutton,如果我选择按钮除了剩余单元格,所有单元格应该灰显或禁用是可能的。

// tableview类中的代码

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{
NSLog(@"No OF rows:%d",[contents count]);
return [contents count];

}

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

static NSString *cellIdentifier = @"cell";

// Try to retrieve from the table view a now-unused cell with the given identifier.
cell = (uploadCustomCell *)[tableView    dequeueReusableCellWithIdentifier:@"uploadCustomCell"];
if (cell == nil) {
    NSLog(@"cell allocated");
    // Use the default cell style.

    cell = [[uploadCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"uploadCustomCell"];
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"uploadCustomCell"
                                                        owner:self options:nil];


  cell = [nib objectAtIndex:0];
}
   saveBtnCcell.hidden = YES;
   cell.textNamefield.hidden = YES;
 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell.defaultSwitch setEnabled:NO];
   dictionaryContents = [contents objectAtIndex:indexPath.row];
   NSLog(@"dict dict :%@",dictionaryContents);
  //

   cell
.nameLabelCell.text   = [dictionaryContents valueForKey:@"VideoName"];
    cell.userName.text = [dictionaryContents valueForKey:@"User"];
  NSLog(@"Array Image:%@",arrayimage);
  cell.thumbImg.image = [arrayimage objectAtIndex:indexPath.row];
   NSLog(@"ARimage:%@,index%d",[arrayimage objectAtIndex:indexPath.row],indexPath.row);
   NSString *defaultVideo = [dictionaryContents valueForKey:@"DefaultVideo"];
NSLog(@"Default Video:%@",defaultVideo);
if ([defaultVideo isEqual: @"1"]) {
    //        [cell.defaultSwitch setOn:YES animated:YES];
    [defaultSwitche setOn:YES animated:YES];

}
else{
      //        [cell.defaultSwitch setOn:NO animated:YES];
    [defaultSwitche setOn:NO animated:YES];
}

   [cell.defaultSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged];



VideoNameTextField.hidden = YES;

   return cell;


}

// customcell中的代码

  @interface uploadCustomCell (){
UploadAllViewController *uploadAll;
}

@end
@implementation uploadCustomCell
@synthesize textNamefield;
@synthesize savebtn,edit,nameLabelCell,textLabel,uploadBTN;
@synthesize defaultSwitch;
//@synthesize uploadAll;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
    // Initialization code
}
return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}


- (void)dealloc {
[_userName release];

[_thumbImg release];

  //[savebtn release];
[textNamefield release];
[nameLabelCell release];
[_test release];

[savebtn release];
[defaultSwitch release];
[uploadBTN release];
[super dealloc];
}


- (IBAction)editAction:(id)sender {
[uploadBTN setEnabled:NO];
uploadAll = [[UploadAllViewController alloc]init];
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:uploadAll.tabelView1];
NSIndexPath *indexPath = [uploadAll.tabelView1 indexPathForRowAtPoint:buttonPosition];
int no = indexPath.row;
NSLog(@"index path :%d",no);
[uploadAll didEditButtonPressed:self];

}
- (IBAction)saveBtnAction:(id)sender {
 [uploadBTN setEnabled:YES];
[uploadAll didSaveButtonPressed:self];
}

当我选择这个editAction时:除了剩余的单元格应该是灰色的。

1 个答案:

答案 0 :(得分:3)

cellForRowAtIndexPath中,您必须考虑表格视图的状态,即是否选择了一个或零个单元格。使用它可以根据需要更改单元格的外观。在下面的例子中,我假设你有一个没有任何部分的直数组,但同样的原则也适用于indexPath。如果没有选择单元格,我会将int selectedRow设置为-1

#define kNoCellSelected -1

// in cellForRowAtIndexPath:

if (self.selectedRow == kNoCellSelected) {
    cell.backgroundView.backgroundColor = normalColor;
    cell.userInteractionEnabled = YES;
}
else if (self.selectedRow != indexPath.row) {
    cell.backgroundView.backgroundColor = disabledColor;
    cell.userInteractionEnabled = NO;
}

不要忘记在selectedRowdidSelectRowAtIndexPath:中设置viewDidLoad

相关问题