0

我目前正在处理我的 iPhone 应用程序的设置部分,我刚刚意识到如果设置中的每个页面都有自己的视图和 .h + .m,那将是很多不必要的代码和视图。所以我得出的结论是,我只会有一种类型的详细视图,它会根据用户选择的表视图中的行而改变。但是...我有点挣扎。

设置:

  • 对于主设置视图,我希望它是具有多个组和行的分组表视图。
  • 对于设置详细信息视图,我还希望它是具有多个组和行的分组表视图(这就是它令人困惑的地方)。

我见过简单的东西,比如图像和标签依赖于之前的视图,而不是分组的表视图结构。是否有可能在没有大量视图或“if”语句的情况下完成我想要的?任何形式的帮助都是值得赞赏的。

4

2 回答 2

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 {
  // ... 对 self.setting 做一些事情
}

而且你不能忘记重新加载表格:

- (void)setSetting:(id)newSetting {
  如果(设置!= newSetting){
    [设置发布];
    设置 = [newSetting 保留];
    [self.tableView reloadData];
  }
}

这是假设以下情况:

  • 您的第一个视图实例化了“detailViewCtrl”属性
  • 您的第一个视图有一个 NSArray 的设置属性,称为“设置”
  • 您的详细视图具有“设置”属性
  • 您的详细视图控制器知道如何处理其“设置”属性
于 2011-03-04T22:41:08.727 回答
1

是的,这当然是可能的。Apple 本质上是通过设置包及其配置通过 plist 文件执行此操作的。

您要编写的是一个通用的表视图控制器,它从外部源加载其配置和内容(一个或多个 plist 文件是一个非常好的选择)。这并不难做到,至少只要您的表格视图执行的操作(例如,当用户点击一个单元格时)是明确定义的并且易于在配置文件中编码。例如:“使用此配置打开一个新页面”或“将此键下的此值保存为用户默认值”之类的操作很容易设置,而“让用户用相机拍照,然后让他们裁剪”之类的操作很容易设置根据他们的喜好将其上传到 Twitter”更难。

于 2011-03-04T22:41:57.477 回答