我想在我的应用程序中添加一个视图,允许用户更改多个(多个)设置。它应该看起来像内置的“设置应用程序”(see here),但它必须在我的应用程序本身。目前我只有一个tableview,我手动添加不同的单元格对象(对应于开关,滑块等)。有更聪明的做法吗?我觉得我正在重新发明轮子。
答案 0 :(得分:11)
这是一个基于互联网标准的老问题,但我发现了一种很难做到这一点的方法,只需要很少的努力。在我找到这些人之前,我正试着在另一个笔尖上建立第二张桌子视图:InAppSettingsKit
基本上他们已经完成了所有的视图和后端工作,你所做的就是将文件添加到你的项目中,并在你正在调用设置页面的类中实现一些委托方法(以及一个按钮)你的UI打开设置面板等),它负责NSUserDefaults的东西。 UI和设置值和键都是从用于真实设置应用程序的相同Settings.bundle生成的,这意味着用户可以在应用程序和设置应用程序中的两个位置更改您的设置。我发现这比使用自定义表视图的委托方法更容易,现在我实际上不必在Settings.app和应用程序之间进行选择,因为它同时执行这两种操作。
剩下的就是在您需要的时候在应用程序中为每个设置键提取所需的值,[[NSUserDefaults standardUserDefaults] objectForKey:@“key”]。
答案 1 :(得分:4)
不,就是这样,用tableView:cellForRowAtIndexPath:
方法返回单个单元格。请记住,UITableViewCell
具有有用的属性,例如附件标记(细节变色按钮,公开指示符或复选标记)和左侧的图像。
答案 2 :(得分:4)
以下是我用来设置偏好设置页面的一些代码:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case (0):
return 3;
break;
case (1):
return 2;
break;
case (2):
return 1;
break;
}
return 0;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
switch (section) {
case (0):
return @"Numbers";
break;
case (1):
return @"Randomize";
break;
case (2):
return @"About";
break;
}
return nil;
}
switch语句设置3个部分:Numbers,Randomize和Versions。您可以使用您需要的任何控件填写这些部分
答案 3 :(得分:0)
如果你真的很好,你可以简单地使用Apple用于描述通常进入设置包的设置的相同格式 - 而是自己解析它们,并根据设置类型动态构建表。 / p>
这是一项很多工作,但是后来又有一半的工作已经为你完成,因为Apple有一个非常好的plist架构,用于定义设置。
这也为您提供了扩展设置格式以包含一些设置应用程序不具备的额外功能的优势......