2013-05-09 76 views
1

我有自定义单元格的表格视图,自定义单元格中有uibuttons,如果我选择按钮除了单元格保持所有单元格都应该变灰或禁用,这是可能的。如何格式化除选定的单元格外的所有tableview单元格

//代码中的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:除了电池剩余细胞应当grayouted。

+0

嗨,欢迎来到SO。为了能够帮助你,你需要提供更多的信息和代码。阅读http://stackoverflow.com/faq#questions,了解您可以在此处询问哪些类型的问题。 – 2013-05-09 13:32:06

回答

2

在您的cellForRowAtIndexPath中,您必须考虑表格视图的状态,即选择了一个或零个单元格。根据需要使用它来改变单元格的外观。在下面的例子中,我假定你有一个没有任何部分的直线阵列,但是同样的原理也适用于indexPath。如果没有选定单元格,我使用设置为-1intselectedRow

#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

+0

如果我们在indexpath的行中使用此代码行,我们不会每次按按钮时重新加载表。 – KMKR 2013-05-10 14:02:13

+0

这不是这个代码所做的。您必须在您的按钮方法中重新加载“运行索引路径”。但是,只有像上面那样动态配置每个单元时,它才会起作用。 – Mundi 2013-05-11 09:41:14