IOS模型视图控制器通信,用于从弹出框中的滑块进行实时更新

时间:2013-02-10 22:37:21

标签: ios model-view-controller uiviewcontroller delegates uislider

我有一个iPad应用程序,它包含一个主视图和相关的视图控制器,可以绘制一些精美的图形。绘制的东西由一系列参数(主要是浮点数)控制,这些参数目前存储在主视图控制器类中。主视图询问drawRect中的参数。

我想从弹出菜单中的滑块实时更新主视图。然而,popover包含一个UINavigationController,它包含一个UITableViewController,其中包含包含滑块的自定义UITableViewCells,因此将正确的控件与正确的数据变量相关联的消息是一种痛苦。此外,消息必须双向进行,因为我必须在首次出现时使用数据初始化滑块位置。

因此,我的主要问题是将滑块更改信息发送回主视图控制器并使其实时更新主视图的优雅方法是什么。我意识到我应该使用委托,但由于我可能有30个参数,我最终可能会编写很多选择器,而且我不确定如何通过视图控制器堆栈传播有关主委托目标的信息。 / p>

2 个答案:

答案 0 :(得分:2)

如果不了解更多关于整体结构的内容,很难说,但我可能会在NSNotification中做到这一点。您可以随时随地通过通知到达任何地方,并且可以在userInfo中传递NSDictionary,其中可以包含任意数量的浮点数(转换为NSNumbers)。

答案 1 :(得分:1)

我不会用NSNotifications做这件事。

相反,我只是为层次结构中的每个控制器创建自定义视图控制器,直到最终的UITableViewController,每个控制器都引用主视图控制器。就像他们可以直接获得和设置属性。

请注意,我不会将对主控制器的引用传递给UITableViewCells本身,而是在表视图中处理任何设置和获取属性,但这可能是一种风格问题。