OGeek|极客世界-中国程序员成长平台

标题: ios - tableCell 中的分段控件 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 17:03
标题: ios - tableCell 中的分段控件

我在表格单元格中遇到分段控制问题。分段控制无 Action

segmentedFilter.addTarget(self, action: #selector(ProductListFilterCell.filterSelected), forControlEvents: .AllEvents)

目标函数:

func filterSelected() {
    if let order = ProductListViewModel.OrderBy(rawValue: segmentedFilter.selectedSegmentIndex), let change = orderChanged{
        change(order)
    }
}

是否可以在表格单元格中进行分段控制?



Best Answer-推荐答案


prepareForReuse中调用addTarget是不正确的,因为这个方法是在cell不再需要的时候调用的。只有重复使用的单元格上才会有选择器。

第二个问题是目标:你传递的是self,它是表格的数据源,但是选择器引用了单元格。如果您通过多次上下滚动来调出一个重复使用的单元格,您的控件将触发该事件,并且应用程序将崩溃并显示未知的选择器消息。

您可以通过将方法移动到数据源类中来解决此问题,在 cellForRowAtIndexPath 中添加目标,并在 prepareForReuse 中删除目标。

segmentedFilter.addTarget(self, action: #selector(ProductListDataSource.filterSelected), forControlEvents: .AllEvents)
//                                               ^^^^^^^^^^^^^^^^^^^^^^

关于ios - tableCell 中的分段控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508504/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4