2013-05-09 2 views
1

У меня есть табличный вид с пользовательскими ячейками, на пользовательской ячейке есть uibuttons, если я выбираю кнопку, за исключением того, что оставшаяся ячейка всех ячеек должна быть серой или отключена, это возможно.Как вырезать все ячейки таблицы, кроме выбранного

// код в 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, чтобы понять, какие вопросы вы можете задать здесь. –

ответ

2

В вашем cellForRowAtIndexPath вам необходимо учитывать состояние вида таблицы, то есть если выбрана одна или нулевая ячейка. Используйте это, чтобы изменить внешний вид вашей ячейки по своему усмотрению. В приведенном ниже примере я предположил, что у вас есть прямой массив без каких-либо разделов, но тот же принцип будет работать и с indexPath. Я использую intselectedRow, установленный на -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; 
} 

Не забудьте установить selectedRow в didSelectRowAtIndexPath: и в viewDidLoad.

+0

, если мы используем этот код в ячейке для строки по пути индекса, мы не перезаряжаем таблицу каждый раз, когда нажимаю кнопку. – KMKR

+0

Это не то, что делает этот код. Вы должны «reloadRowsAtIndexPaths» в методе кнопок. Однако он будет работать, только если вы настроите каждую ячейку динамически, как указано выше. – Mundi

Смежные вопросы