Iphone 我如何重新创建一个;“设置应用程序”-比如我的应用程序中的tableview?

Iphone 我如何重新创建一个;“设置应用程序”-比如我的应用程序中的tableview?,iphone,objective-c,Iphone,Objective C,我想向我的应用程序添加一个视图,允许用户更改多个(多个)设置。它应该看起来像内置的“设置应用程序”(),但它必须在我的应用程序本身。目前我只有一个tableview,我手动添加了不同的单元格对象(对应于开关、滑块等)。有更聪明的方法吗?我有一种感觉,我正在重新发明轮子 不,就是这样,在tableView:cellforrowatinexpath:方法中返回单个单元格。请记住,UITableViewCell具有一些有用的属性,如附件标记(详细信息发现按钮、泄露指示器或复选标记)和左侧的图像 下面是

我想向我的应用程序添加一个视图,允许用户更改多个(多个)设置。它应该看起来像内置的“设置应用程序”(),但它必须在我的应用程序本身。目前我只有一个tableview,我手动添加了不同的单元格对象(对应于开关、滑块等)。有更聪明的方法吗?我有一种感觉,我正在重新发明轮子

不,就是这样,在
tableView:cellforrowatinexpath:
方法中返回单个单元格。请记住,
UITableViewCell
具有一些有用的属性,如附件标记(详细信息发现按钮、泄露指示器或复选标记)和左侧的图像

下面是我用来设置首选项页面的一些代码:

-(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个部分:数字、随机化和版本。你可以用你需要的任何控件来填充这些部分

如果你真的很努力,你可以简单地使用苹果用来描述设置的相同格式,这些设置通常会进入设置包,但是你可以自己解析它们,并根据设置类型动态构建一个表

这是一个很大的工作,但同样,一半的工作已经为您完成了,因为苹果公司有一个非常好的,但出plist模式如何定义设置


这也给了你扩展设置格式的优势,包括一些设置应用程序不具备的额外功能…

这是一个互联网标准的老问题,但我发现了一个惊人的方法来做到这一点,只需要很少的努力。在我发现这些家伙之前,我正努力在另一个笔尖中构建第二个表格视图:

基本上,他们已经完成了所有视图和后端的工作,您所做的只是将文件添加到项目中,并在调用设置页面的类中实现一些委托方法(以及UI中打开设置面板的按钮等),它负责NSUserDefaults的工作。用户界面、设置值和键都是从用于real settings应用程序的相同settings.bundle生成的,这意味着用户可以在应用程序和设置应用程序的两个位置更改您的设置。我发现这比在自定义表视图中使用委托方法要容易得多,现在我实际上不必在Settings.app和app中的某个对象之间进行选择,因为它可以同时执行这两种操作


剩下的就是在以后需要时,使用[[NSUserDefaults standardUserDefaults]objectForKey:@“key]”在应用程序中提取每个设置键所需的值。

Nice。不幸的是,已经晚了将近一年,但我会记住它,以防我再次需要它。如果有人对结果感兴趣(转到“银河”,然后是“选项”):