2012-01-08 2 views
0

У меня есть табличный вид. И им, добавив две кнопки для каждой ячейки:Ошибка UITableView при программном программировании UIButton

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     newBtn = [[UIButton alloc]init]; 
     newBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [newBtn setFrame:CGRectMake(250,10,25,55)]; 
     [newBtn addTarget:self action:@selector(addLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [newBtn setTitle:@"+" forState:UIControlStateNormal]; 
     [newBtn setEnabled:YES]; 
     newBtn.hidden = YES; 
     [cell addSubview:newBtn]; 

     subBtn = [[UIButton alloc]init]; 
     subBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [subBtn setFrame:CGRectMake(280,10,25,55)]; 
     [subBtn addTarget:self action:@selector(subtractLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [subBtn setTitle:@"-" forState:UIControlStateNormal]; 
     [subBtn setEnabled:YES]; 
     subBtn.hidden = YES; 
     [cell addSubview:subBtn]; 

    } 
return cell; 
} 

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

Я могу получить одну из кнопок ячеек для этого.

- (IBAction)editButton:(id)sender 
{ 
    if (self.editing) 
    { 
     [self setEditing:NO animated:YES]; 
     [self.myTableView setEditing:NO animated:YES]; 
     EditButton.title = @"Edit"; 
     subBtn.hidden = YES; 
     newBtn.hidden = YES; 
    } 
    else 
    { 
     [self setEditing:YES animated:YES]; 
     [self.myTableView setEditing:YES animated:YES]; 
     EditButton.title = @"Done"; 
     subBtn.hidden = NO; 
     newBtn.hidden = NO; 
    } 
} 

Но проблема в том, что когда я это делаю, только сама LAST-ячейка получает кнопки. Они появляются и исчезают точно, когда я хочу, но только последняя ячейка! Никакие другие ячейки не получают никаких кнопок, может кто-то, пожалуйста, помогите мне! Спасибо!

ответ

1

Способ, которым вы это делаете subBtn и newBtn Указывает на кнопки последней ячейки. Лучшим подходом будет подкласс UITableViewCell и сделать переменные экземпляра кнопок. Затем перезапишите - (void)setEditing:(BOOL)editing animated:(BOOL)animated и скройте/покажите кнопки там.

+0

Не могли бы вы объяснить это немного лучше? Im a noob! lol Что вы подразумеваете под "subcall"? также, если это не слишком много хлопот, не могли бы вы предоставить, пожалуйста, какой-то образец кода, чтобы я мог изучить его и использовать в моей программе? Спасибо за помощь! – iProRage

+0

также, как мои кнопки «указывают» на кнопки последней ячейки? im не уверен, какой код это делает! еще раз спасибо! : D – iProRage

+0

Я имел в виду подкласс. Посмотрите каждый раз, когда вы делаете "subBtn = [[UIButton alloc] init];" ваш указатель явно переопределен, поэтому в конце он указывает на кнопки последней ячейки. Не знаю, как лучше объяснить это. –

1

Как вы стреляете методом «кнопки редактирования»? Если вы используете didSelectRowAtIndexPath, тогда отобразится только выбранная строка. Вы можете выполнять итерацию через indexpath.row для видимых ячеек, сохраняя каждую строку.

+0

Я просто вызываю этот метод с кнопки на навигационной панели и благодарю за помощь! – iProRage

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