0

我有一个 iPad 应用程序,它由一个主视图和关联的视图控制器组成,它可以绘制一些精美的图形。绘制的东西由许多参数(主要是浮点数)控制,目前我存储在主视图控制器类中。主视图询问drawRect内部的参数。

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

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

4

2 回答 2

2

在不了解您的整体结构的情况下很难说,但我可能会使用 NSNotification 来执行此操作。您可以通过通知从任何地方到达任何地方,并且可以在 userInfo 中传递一个 NSDictionary,它可以包含任意数量的浮点数(转换为 NSNumbers)。

于 2013-02-10T22:48:04.217 回答
1

我不会用 NSNotifications 来做这件事。

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

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

于 2013-02-10T23:49:48.563 回答