【发布时间】:2014-03-20 21:03:38
【问题描述】:
我的表格视图有 2 个部分,其中第一部分有一个开关,其他部分有几个表格视图单元格。当开关打开时,单元格应该可见并被选中,当开关关闭时,单元格应该被隐藏。
如果我的第一部分的 cellForRowAtIndexPath 我在用户更改开关状态时执行一个选择器,如下所示:
- (UITableViewCell *)cellForRowAtIndexPathForFirstSection
{
[self.tableViewFirstCell.mySwitch addTarget:self action:@selector(changeState:) forControlEvents:UIControlEventValueChanged];
return self.tableViewFirstCell;
}
changeStateMethod:
- (void)changeState:(UISwitch *)sender
{
if ([sender isOn])
{
//Show other section and select its cells.
}
// Reload the table view.
[self.tableView reloadData];
if (![sender isOn])
{
// Collect the selected cells data and hide the section.
}
}
当用户第一次登陆视图时,系统应该处理改变开关状态的情况。如果应该打开开关,我有:
[self.tableViewFirstCell.mySwitch setOn:YES animated:YES]; or to make it OFF I have:
[self.tableViewFirstCell.mySwitch setOn:NO animated:YES];
问题: 所以无论是系统改变开关还是用户改变开关,两种情况下开关状态改变后要执行的逻辑都是相同的。简而言之,当用户更改开关时,会调用选择器方法,但是当系统更改状态时,有一种方法可以调用选择器来确定开关更改为什么状态,然后像它一样适当地执行逻辑当用户改变开关时?
例如:当用户将开关状态更改为 ON 时,“if ([sender isOn])”内部的逻辑将被执行。我想在系统将开关状态更改为 ON 时执行此逻辑。
【问题讨论】:
-
“系统改变开关状态”是什么意思?您的意思是当您的代码显式更改状态时?
-
是的系统我的意思是代码改变了状态。