在 UITableView 中保存单元格的 UISwitch 状态以将数据传递给源控制器

Saving state of UISwitch of cells in UITableView to pass data to source controller

我有一个 ListTableView,单元格分为几个部分。 另一个控制器提供的另一个 FilterTableView(过滤器设置为 ListTableView)。 FilterTableView的每个单元格都有一个UISwitch来设置ListTableView的指定部分的showing/hiding状态。

如何保存 UISwitchBOOL 状态?

我需要提供什么样的型号?

传递 UISwitch 细胞状态的正确方法是什么 FilterTableView 至 show/hide 节 ListTableView?

提前感谢您的帮助!

您需要将对数据源中项目的引用传递给单元格,以便它可以直接更改它(例如,传递 Filter 对象),或者您需要制作 FilterTableView 每个单元格的代表,并让单元格在开关值更改时通知其代表。

如果单元格是通用的,并且您还在其他地方使用它来做其他事情,请使用委托模式。但是,如果它是此 table 视图所独有的,则将 Filter 对象传递给它可能会更容易。这样它也可以自己设置标签和切换状态,而不是要求数据源设置它的值。

如果您使用的是 stroyboard,则可以创建一个 unwind segue(从 FilterTableViewCtrl 返回到 ListTableViewCtrl)。这种情况下,您可以将数据保存在位于 ListTableViewCtrl 中的展开操作方法中。

- (IBAction)unwindToList:(UIStoryboardSegue*)unwindSegue
{
    UIViewController* sourceViewController = unwindSegue.sourceViewController;
    if ([sourceViewController isKindOfClass:[FilterTableViewCtrl class]])
    {
        FilterTableViewCtrl* filter = (FilterTableViewCtrl*)unwindSegue.sourceViewController;
        //read state of filter, and update list (self)
    }
}

更多详细信息,请参见:iOS 查看控​​制器编程指南/创建展开 Segue