У меня есть UITableView с настраиваемыми ячейками в нем. У каждой ячейки есть переключатель, и мне нужно получить индексную ячейку определенной ячейки каждый раз, когда с ней взаимодействует коммутатор. Как я могу вернуть indexPath ячейки из UITableView с настраиваемыми ячейками каждый раз, когда коммутатор взаимодействует?Получение indexPath от включения UITableView
ответ
Вы можете использовать indexPathForRowAtPoint
как:
@IBAction func switchChanged(sender: UIControl) {
let rowPoint = sender.convertPoint(sender.frame.origin, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(rowPoint)
println(indexPath)
}
Это Objective C версии
- (IBAction)toggleSwitch:(id)sender {
UISwitch *switchInCell = (UISwitch *)sender;
CGPoint pos = [switchInCell convertPoint:[switch frame].origin toView:tableView];
NSIndexPath *indexPath = [[self tableView] indexPathForRowAtPoint:pos];
}
Если вы хотите получить indexPath ячейки в пользовательской ячейке:
// CustomCell.swift
@IBAction func switchChanged(sender: UIControl) {
let tableView = self.tableView()
let indexPath = tableView?.indexPathForCell(self)
println(indexPath)
}
func tableView() -> UITableView? {
var tableView = self.superview
while (tableView != nil && !(tableView is UITableView)) {
tableView = tableView!.superview
}
return tableView as? UITableView
}
Один способ, я могу думать, чтобы решить это
EDIT Это может работать в iOS6 или старше
- (void)toggleSwitch:(id)sender {
UISwitch *switch = (UISwitch *)sender;
UITableViewCell * cell = (UITableViewCell*) switch.superview;
NSIndexPath *indexpath = [[self yourTableView] indexPathForCell:cell];
}
Это опасно.Различные версии iOS могут иметь различное количество просмотров между отправителем и ячейкой. – Bannings
@Bannings Правда, хотя вы не могли бы пройти через свои наблюдения и искать UITableViewCell? –
Да, я согласен, я просто взял его из старого проекта, который у меня есть –
Одна секция TableView: в методе cellForRowAtIndexPath
вы можете установить тег переключателя то текущей ячейки, как cell.switch.tag = indexPath.Row
и в методе переключая вы может получить метку вашего коммутатора
- (void)toggleSwitch:(id)sender {
UISwitch *switch = (UISwitch *)sender;
int row = switch.tag;
//you can switch on the switch values to to get the exact switch then do your action
}
Мульти секции Tableview: Создайте собственный класс коммутатора, который имеет свойство NSIndexPath
, а затем в методе cellForRowAtIndexPath
вы можете установить это свойство с помощью указателя фактической ячейки, но не забудьте сбросить это свойство в методе prepareForReuse
в пользовательской ячейке. и в вашем методе переключения вы получите фактическое indexPath
- 1. Получение имени ячейки от indexPath/SWIP Жест
- 2. Прохождение indexPath из UITableView
- 3. UITableView indexPath последней строки
- 4. UITableView - Что такое indexPath?
- 5. UITableView indexPath раздел логики
- 6. UITableView Cell IndexPath
- 7. Подкласс UITableView indexPath nil
- 8. UITableView prepareForSegue, присваивающий indexPath отправителю?
- 9. UITableView, получающий indexPath в textFieldDidBeginEditing:
- 10. Развернутые разделы UITableView IndexPath SWIFT
- 11. UITableView commitEditingStyle возвращает nil indexPath
- 12. Получение indexPath элементов коллекцииView
- 13. получить indexpath от CollectionView, иногда получить неправильный indexPath
- 14. Получение значения от uitextfield в uitableview
- 15. Получение данных от каждой ячейки UITableView Swift
- 16. Получение indexPath объекта в FetchedResultsController
- 17. IndexPath для следующего/предыдущего UITextField в UITableView
- 18. Как удалить CKRecord в indexPath? (UITableView)
- 19. Получить indexPath в режиме редактирования UITableView
- 20. iCarousel + UITableView = cellForRowAtIndexPath indexPath всегда null
- 21. UIButton indexpath возвращает неправильный путь в UITableView
- 22. rectForRowAtIndexPath сбой с определенным indexPath в UITableView
- 23. Выбор различных UITableViewCells только от indexPath
- 24. Получение индекса Integer От indexPath Из ячейки в Swift
- 25. Получение данных из UITableView
- 26. Как я могу получить uitableViewCell от indexPath?
- 27. Переходя indexpath к performsequewithidentifier от кнопки uitablerowaction
- 28. Получить UITableViewCell от indexPath не работает
- 29. Как получить IndexPath от NSDictionary
- 30. Обновить UITableView от контроллера
Вы создали свою ячейку программно или через IB? – dasblinkenlight
@dasblinkenlight Ячейки были созданы, создавая файл .xib и связывая его с подклассом UITableViewCell, где я все настраивал, а затем я использовал методы tableview для заполнения таблицы ячейками (не уверен, что это ответ, который вы искали потому что дайте мне знать) – ACR
Если у вас есть один раздел, вы можете установить свойство «Tag» этого переключателя в строку пути индекса при заполнении таблицы ячейками. – dasblinkenlight