我对表格单元中的分段控件有问题。没有分段控制的操作

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

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

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

最佳答案

addTarget中调用prepareForReuse是不正确的,因为在不再需要该单元格时会调用此方法。只有重用的单元格才会有选择器。

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

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

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

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

10-13 04:19