5

在 iPhone 上使用 Settings.app 并不难。事实上,Xcode 为您完成了大部分工作。只需将 Settings.bundle 添加到您的项目中,您就可以免费获得它。

目前我正在为 iPhone 开发一个应用程序,它需要用户填写几个“表单”,主要是键值对、一些滑块和几个带有“下拉”菜单的模式视图。如此相似,该任务类似于 Settings.app 所做的。

在我看来,自己做表格是一项繁重的任务,所以我想知道是否有此类任务的框架。不幸的是,苹果似乎没有提供自己的解决方案。也许有人知道网络上描述最佳实践的框架或文章。

如果你不明白我指的是哪种模式,我做了一个截图:http: //img.skitch.com/20090625-s8bf6ahybwe3cesd1id38h3nt.jpg

4

5 回答 5

8

查看http://www.inappsettingskit.com。它在几个应用程序中使用,并且得到积极维护(由我自己和其他一群人)。

于 2010-07-20T08:50:29.970 回答
3

经过大量研究,我没有设法对我最初的问题得到一个好的答案。但现在我偶然发现了 github 上的这个存储库:mySettings

于 2009-06-27T22:41:27.670 回答
2

最好将设置放在应用程序中,至少在 Apple 可以轻松地将用户发送到设置然后返回应用程序之前。如果你看一下新的 3.0 UITableViewCellStyles,有一种风格是为设置类型的单元格量身定制的——它可以很容易地构建一个简单的设置屏幕。

于 2009-06-25T15:43:30.220 回答
1

好吧,如果您正在进行设置,那么我建议将它们放在正确的位置并使用 Settings.bundle。

我猜你正在做设置,尽管这对你的应用程序非常重要,如果他们不得不不断地从应用程序跳转到设置并再次返回,那将是一种可怕的用户体验。

当你说做这项任务很重时——你能详细说明一下吗——正如我所做的那样,它并不重。

使用 UITableViewController

对于您要使用的每个单元格,放入类似于以下内容的代码:

        cell.textLabel.text = @"Last name:";
        UIFont *labelFont = [UIFont systemFontOfSize:[UIFont labelFontSize]];
        CGSize textSize = [cell.textLabel.text sizeWithFont:labelFont];
        baseRect.origin.x = textSize.width+15;
        baseRect.origin.y +=7;
        baseRect.size.width = baseRect.size.width - textSize.width - 15;
        baseRect.size.height = 23;
        UITextField *textField = [[UITextField alloc] initWithFrame:baseRect];
        textField.keyboardType = UIKeyboardTypeAlphabet;
        textField.returnKeyType = UIReturnKeyDone;
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.delegate = self;
        textField.placeholder = @"last name";
        [textField addTarget:self action:@selector(lastNameChanged:) forControlEvents:UIControlEventAllEditingEvents];
        textField.tag = 182;
        [cell.contentView addSubview:textField];    
        [textField release];

这对我来说可以重现您正在谈论的界面 - 这里的示例是一个 TextField - 但是相同的代码对所有控件都非常有效。

于 2009-06-25T11:11:35.433 回答
0

我很确定他要求的是一个从 settings.bundle 文件重新创建设置界面的框架,以便在设置应用程序和您的应用程序中都可以进行设置。

我还不知道这样的东西,但是,我真的可以使用一个,我考虑过写一个。

于 2009-06-25T15:11:44.370 回答