我正在处理我的iPhone应用程序的设置部分,我刚认识到如果设置中的每个页面都有自己的视图和.h + .m,那将是很多不必要的代码和观点。所以我得出的结论是,我只会根据用户选择的表视图中的行只改变一种类型的细节视图。但是......我有点挣扎。
设置:
我看到图像和标签等简单的东西取决于前一个视图,但不是分组的表视图结构。是否有可能在没有大量观点或“如果”陈述的情况下完成我想要的内容?任何形式的帮助都是相关的。
答案 0 :(得分:1)
你必须做两件事(考虑到你有一个设置视图控制器和一个细节视图控制器)......
首先,当用户在设置视图控制器中选择一行时,您必须在详细视图控制器中设置您要编辑的设置。那是......
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.detailViewCtrl setSetting:[self.settings objectAtIndex:indexPath.row]]; [self.navigationController pushViewController:self.detailViewCtrl]; }
在详细视图中,您必须修改以下方法来渲染表格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // ... do something with the self.setting }
你不能忘记重新加载表格:
- (void)setSetting:(id)newSetting { if (setting != newSetting) { [setting release]; setting = [newSetting retain]; [self.tableView reloadData]; } }
这假设如下:
答案 1 :(得分:1)
是的,这当然是可能的。 Apple基本上使用Settings bundle及其配置通过plist文件执行此操作。
您要编写的是一个通用的表视图控制器,它从外部源加载其配置和内容(一个或多个plist文件是一个非常好的选择)。这并不是很难做到,至少只要你的表视图执行的动作(例如当用户点击一个单元格时)定义良好且易于在配置文件中编码。例如:“使用此配置打开新页面”或“在此键下将此值保存到用户默认值”等操作很容易设置,例如“让用户用相机拍照,然后让它们裁剪”它自己喜欢并将其上传到Twitter“更难。