0

这可能是一个非常基本的问题,但我还没有找到答案。我有一个 UITableView 作为我的应用程序的菜单。表格视图上的每一行,当被选中时,都会打开一个不同的 UIViewController 子类。

目前,我的代码的工作方式与 Apple 的 UICatlog 示例中使用的方式相同。在主视图控制器(表格视图)中,每个菜单项都在一个数组(menuList)中的字典中进行描述。每个字典都包含该屏幕的 UIViewController 子类的实例和有关菜单项的其他数据。当用户选择一行时,didSelectRow atIndexPath 启动并调用适当的视图控制器,存储在 menuList 数组的 indexPath.row 的字典中。

在表视图首次加载时分配和初始化每个视图控制器似乎非常浪费。

我的问题是:有没有比 UICatalog 中展示的更好的方法来分配/初始化我的视图控制器子类,只有当关联的行被点击时?(我知道我可以在 didSelectRow 中使用复杂的 if..else 结构,但这会导致 didSelectRow 方法非常长并破坏封装。我想知道是否有更简洁的方法来执行此操作,分配和初始化适当的基于视图控制器字典中的数据)

4

3 回答 3

0

user1349768 尝试使用 Storyboard,但此功能仅适用于 iOs 4 及更高版本。

于 2012-10-21T18:45:59.303 回答
0

只是一个建议......将对每个视图控制器的一些引用放入 NSArray 中,然后在该行被点击时启动并继续它们(并且只需从 objectAtIndex 获取引用:)。

于 2012-10-21T19:02:51.237 回答
0

虽然我找不到更好的方法来做到这一点,但每个分配的 View Controller 的内存签名只有 288 字节。由于苹果建议的解决方案比使用 switch case 语句更优雅和可扩展,所以我保持原样。

于 2012-10-29T19:06:41.013 回答