Ios tableCell中的分段控制
我对表格单元格中的分段控件有问题。分段控制不动作Ios tableCell中的分段控制,ios,swift,uisegmentedcontrol,Ios,Swift,Uisegmentedcontrol,我对表格单元格中的分段控件有问题。分段控制不动作 segmentedFilter.addTarget(self, action: #selector(ProductListFilterCell.filterSelected), forControlEvents: .AllEvents) 目标功能: func filterSelected() { if let order = ProductListViewModel.OrderBy(rawValue: segmentedFilter.s
segmentedFilter.addTarget(self, action: #selector(ProductListFilterCell.filterSelected), forControlEvents: .AllEvents)
目标功能:
func filterSelected() {
if let order = ProductListViewModel.OrderBy(rawValue: segmentedFilter.selectedSegmentIndex), let change = orderChanged{
change(order)
}
}
是否可以在表单元格中使用分段控件?在
prepareforeuse
中调用addTarget
是不正确的,因为当不再需要单元格时会调用此方法。只有重复使用的单元格才会有选择器
第二个问题是目标:您正在传递self
,这是表的数据源,但是选择器引用了单元格。如果你通过上下滚动几次来打开一个重复使用的单元格,你的控件将触发该事件,应用程序将因未知选择器消息而崩溃
您可以通过将该方法移动到数据源类中,在cellforrowatinexpath
中添加目标,并在prepareforeuse
中删除目标来解决此问题
segmentedFilter.addTarget(self, action: #selector(ProductListDataSource.filterSelected), forControlEvents: .AllEvents)
// ^^^^^^^^^^^^^^^^^^^^^^
什么方法执行对
addTarget
的调用?您是使用故事板/NIB还是以编程方式创建单元格?我将cellFilter.segmentedFilter.addTarget(self,action:#selector(MainTableView.filterSelected(:))、forControlEvents:.AllEvents)
添加到cellForRowAtIndexPath
中,但仍然不起作用:(