有没有办法设置手势识别器来重复UI元素,如UITableViewCells?

时间:2016-11-28 20:11:28

标签: ios swift xcode uitableview

我正在开发一个带有UITableView的iOS应用程序,需要滑动手势才能对表格中的任何单元格(行)执行特定操作。

当我最初在我的视图控制器(其中包含UITableView)中为手势实现IBAction时,我甚至无法运行应用程序,因为Xcode告诉我一个错误,它不允许将手势附加到重复的界面元素(该单元格是重复元素,因为每次需要通过使可重复使用的单元格出列时都会生成新的单元格。)

所以我继续将滑动手势的IBAction放在我的自定义表格单元格类中,此时我不再收到阻止我构建/运行的错误,但仍然在调试控制台中收到警告在运行应用程序时,该应用程序声明自iOS9以来,系统现在强制禁止附加到重复元素的手势(在本例中为我的表格单元格)。

如果有人对手势识别器有所了解,如果你能帮助我弄清楚以下问题,我将不胜感激。

  1. 我是否应该从表面上看这个警告,并假设我根本不允许任何手势附着在桌面上?

  2. 在任何一种情况下,是否有其他方法将手势附加到重复元素(如原型表格单元格)并避免任何类型的警告/禁止?

1 个答案:

答案 0 :(得分:1)

您应该将滑动放在viewcontroller中,并使用以下代码通过Swipe IBAction获取单元格。一旦你完成了,你可以做你想做的事:cell.do_something或cell.element.do_something

您获得具有滑动位置的单元格,如:

目标C:

CGPoint location = [sender locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

夫特:

let location : CGPoint = sender.locationInView(self.tableView)
let indexPath : NSIndexPath = tableView.indexPathForRowAtPoint(location)
let cell : UITableViewCell = tableView(tableView, cellForRowAtIndexPath: indexPath)