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

时间:2016-02-16 15:56:54

标签: ios objective-c uitableview uiswitch pass-data

我有一个ListTableView,其细胞分为几个部分。 另一个控制器提供的另一个FilterTableViewListTableView的过滤器设置)。 FilterTableView的每个单元格都有UISwitch来设置ListTableView指定部分的显示/隐藏状态。

我究竟如何保存BOOL的{​​{1}}状态?

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

传递UISwitch个细胞状态的正确方法是什么? UISwitch显示/隐藏FilterTableView中的部分?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您需要将对数据源中的项的引用传递给单元格,以便它可以直接更改它(例如,传入Filter对象),或者您需要创建{{1每个单元格的委托,并在切换值更改时让单元格通知其委托。

如果单元格是通用的,并且您也可以在其他地方使用它来执行其他操作,请使用委托模式。但是,如果它对于此表视图是唯一的,那么将FilterTableView对象传递给它可能更容易。这样它也可以自己设置标签和开关状态,而不是要求数据源设置它的值。

答案 1 :(得分:0)

如果您使用的是stroyboard,则可以创建一个展开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的View Controller编程指南/创建放松搜索