这可能是一个非常基本的问题,但我还没有找到答案。 我有一个UITableView作为我的应用程序的菜单。选择后,表视图上的每一行都会打开UIViewController的不同子类。
目前,我的代码的工作方式与Apple的UICatlog示例中使用的方式相同。 在主视图控制器(表视图)中,每个菜单项在数组中的字典(menuList)中描述。每个字典都包含该屏幕的UIViewController子类的实例以及有关该菜单项的其他数据。当用户选择一行时,didSelectRow atIndexPath将启动并调用相应的视图控制器,该控制器存储在menuList数组的indexPath.row的字典中。
在表视图首次加载时,分配和初始化每个视图控制器似乎非常浪费。
我的问题是:有没有比UICatalog中演示的方法更好的方法,只有在关联相关行时才分配/初始化我的视图控制器子类? (我知道我可以在didSelectRow中使用复杂的if..else结构,但这会导致一个非常长的didSelectRow方法并打破封装。我想知道是否有更简洁的方法来执行此操作,分配和启动相应的视图控制器来自字典的数据)
答案 0 :(得分:0)
user1349768尝试使用Storyboard,但此功能仅适用于iOs 4及更高版本。
答案 1 :(得分:0)
只是一个建议......将每个视图控制器的一些引用放入NSArray中,然后在触发该行时启动并转换它们(并从objectAtIndex获取引用:)。
答案 2 :(得分:0)
虽然我找不到更好的方法,但每个分配的View Controller的内存签名只有288个字节。由于apple提出的解决方案比使用switch case语句更加优雅和可扩展,因此我将其保留原样。