我正在使用锻炼应用程序,用户可以使用UISwitch来设置锻炼是否有效。我有一个分段控制器,用于切换到显示"全部"或仅显示"活跃"。
是否可以在我的UISegmentedControl Action中获取具有此属性的特定单元格?
我的代码如下所示:
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("ChallengeCell") as? ChallengeListCell {
cell.setTitle("Utmaning " + String(indexPath.row + 1))
let active = indexPath.row % 3 == 0 || indexPath.row % 5 == 0
cell.setActive(active)
if active {
cell.setCompleted((Double(indexPath.row % 5) + Double(indexPath.row % 3)) / 6.0)
}
else {
cell.setCompleted(0)
}
return cell
}
return UITableViewCell()
}
我的SegmentedControl函数如下所示:
@IBAction func segmentedControlChanged(sender: UISegmentedControl) {
let selectedSegment = segmentedControl!.selectedSegmentIndex
switch selectedSegment{
case 0: //SHOW ALL
print("Selected 0")
case 1: //SHOW ONLY ACTIVE
print("Selected 1")
//case 2: //NOT ACTIVE
//print("Selected 2")
default:
print(sender)
}
}
所有这些都在同一个控制器中。
答案 0 :(得分:0)
您应该有三个数据源数组:例如allItems
activeItems
和inactiveItems
,并在它们之间切换。
在tableView
个委托中,检查使用segmentedControl选择的段,并使用正确的数组作为数据源。
在segmentedControlChanged
内调用self.tableView.reloadData()
并使用所选的段设置变量。
答案 1 :(得分:0)
一种方法是跟踪" Active"的索引路径。数组中的单元格,它是视图控制器的实例属性。与切换分段控制器时相比,只需查看数组就可以确定从表视图中删除/添加的单元格。
另一个想法是在模型对象上拥有一个活动属性,用于保存每个表视图单元格的数据。当切换分段控件时,您可以迭代所有这些对象以确定它们是否“活动”#34;或不,并相应地进行。
从您提供的代码中,听起来我的第一个建议是最合适的。