Хорошо, я знаю, что я сталкиваюсь с моими пределами понимания относительно цели-c, какао, xcode, и бла-бла и так далее. Но вот что я пытаюсь сделать:
У меня есть табличное представление в viewcontroller. Делегатом табличного представления является viewcontroller. Viewcontroller имеет выход к табличному виду. Таблица составляется с использованием пользовательских ячеек (с IB XIB) и данных из XML-файла. В пользовательской ячейке есть две кнопки - и когда ячейка создана, действие кнопки добавляется в качестве addTarget для себя (viewcontroller), которое затем переходит к действию. Метод действия кнопки viewcontroller возвращает строку кнопки, нажатой в таблице, а затем изменяет текст ячейки и заголовок кнопки.
Но, конечно, когда я прокручиваю эту конкретную ячейку из поля зрения и снова в поле зрения, она сбрасывается в начальное состояние. Я предполагаю, что это связано с вытеснением клеток и т. Д. Есть идеи?
вот соответствующие биты и код:
Пользовательская ячейка: имеет выходы для кнопок и надписи.
код создания ячейки в источнике данных cellForRowAtIndexPath ...
{
static NSString *dialogueCellIdentifier = @"dialogueCellIdentifier";
dialogue_cell *cell = (dialogue_cell *)[tableView dequeueReusableCellWithIdentifier:dialogueCellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"dialogue_cell" owner:self options:nil];
cell = [nib objectAtIndex:0];
[[cell lButton] addTarget:self action:@selector(lButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
[[cell lButton] setTag:[indexPath row]];
NSString *row = [NSString stringWithFormat:@"%i",[indexPath row]];
NSString *en = [[self.dataArray objectForKey:row] valueForKey:@"en"];
cell.mainText.text = en;
return cell;
}
и метод lButton ...
NSIndexPath *thisCellPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
dialogue_cell *thisCell = (dialogue_cell *)[self.dialogueTable cellForRowAtIndexPath:thisCellPath];
NSString *row = [NSString stringWithFormat:@"%i",[sender tag]];
if ([thisCell.languageButton.currentTitle isEqualToString:@"en"]) {
[thisCell.languageButton setTitle:@"zc" forState:UIControlStateNormal];
thisCell.mainText.text = [[self.lineArray objectForKey:row] valueForKey:@"lineText_zc"];
} else {
[thisCell.languageButton setTitle:@"en" forState:UIControlStateNormal];
thisCell.mainText.text = [[self.lineArray objectForKey:row] valueForKey:@"lineText_en"];
}
так два вопроса:
1. есть ли способ заставить ячейку сохранять то, что находится в метке и имени кнопки, даже если она прокручивается за пределами экрана?
2. есть ли способ установить метку и имя кнопки в пользовательском классе ячейки вместо отправки действия кнопки контроллеру представления, в котором находится таблица?
Спасибо!