PHP Как вызвать parent :: __ call () и передать аргументы

У меня есть UITableView с ячейками, содержащими элемент управления UISwitch . Это похоже на представление таблицы в приложении «Часы» на iPhone, показанном ниже ...

alt text
(источник: epicself.com )

В методе cellForRowAtIndexPath моего приложения я создаю и прикрепите элемент управления UISwitch вот так ...

 CGRect frameSwitch = CGRectMake(215.0, 10.0, 94.0, 27.0);
 UISwitch *switchEnabled = [[UISwitch alloc] initWithFrame:frameSwitch];
 [switchEnabled addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged];

 cell.accessoryView = switchEnabled;

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

Заранее большое спасибо за вашу помощь!

7
задан Glorfindel 5 August 2019 в 21:08
поделиться

2 ответа

В своем методе действия вы можете преобразовать супервизор переданного UISwitch (который является самим UITableViewCell ), а затем передать его в Метод tableView indexPathForCell .

indexPathForCell вернет объект NSIndexPath , который вы затем можете использовать для индексации вашей модели данных для изменения. Затем все, что вам нужно сделать, это вызвать reloadData в вашем tableView .

Кроме того, в cellForRowAtIndexPath вы должны установить состояние UISwitch на основе вашей модели.

9
ответ дан 6 December 2019 в 10:46
поделиться

Прежде всего, исправьте утечку памяти:

UISwitch *switchEnabled = [[[UISwitch alloc] initWithFrame:frameSwitch] autorelease];

Затем выберите один из следующих вариантов:

switchEnabled.tag = someInt; // before adding it to the cell

NSLog(@"switched %d",switch.tag); // to see which switch was toggled

или

UITableViewCell *parentCell = switchEnabled.superview;
// + some magic to see which cell this actually is
9
ответ дан 6 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: