Как узнать, какая строка включена в UITableView - PullRequest
1 голос
/ 19 марта 2011

У меня есть UITableView myTable, в котором есть UISwitch для каждой строки.

Как найти номер строки таблицы, для которой изменяется переключатель, в моем методе switchChanged?

- (void) switchChanged:(id)sender {
    UISwitch* mySwitch = sender;
    NSLog( @"%d", mySwitch.on );
}

Спасибо

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Одним из предложений может быть использование тега.

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

0 голосов
/ 19 марта 2011

Если у вас есть только один раздел (или только один раздел с переключателями, использующими этот метод), вы можете сохранить номер строки в свойствах tag переключателей. Или, если вы ограничиваете себя разумным количеством разделов и строк, вы можете сохранить номер раздела в старших N битах и ​​номер строки в младших М битах целого тега (N + M <32 для лучших результатов). </p>

Или вы можете использовать superview от коммутатора, пока не найдете UITableViewCell (тестирование с использованием isKindOfClass:), а затем использовать indexPathForCell: в табличном представлении, чтобы найти путь индекса.

Или вы можете создать подкласс UISwitch, чтобы иметь свойство для хранения пути индекса.

Или вы можете использовать objc_setAssociatedObject, чтобы связать индексный путь с коммутатором.

...