【问题标题】:Saving state of UISwitch of cells in UITableView to pass data to source controller在 UITableView 中保存单元格的 UISwitch 状态以将数据传递给源控制器
【发布时间】:2016-05-28 00:04:02
【问题描述】:

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

我究竟如何保存UISwitch 的BOOL 状态?

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

传递UISwitch的单元格状态的正确方法是什么 FilterTableView 显示/隐藏ListTableView 中的部分?

提前感谢您的帮助!

【问题讨论】:

  • 你有任何尝试的代码吗?

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


【解决方案1】:

如果您使用的是 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 控制器编程指南/创建 Unwind Segue

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多