代码之家  ›  专栏  ›  技术社区  ›  Jens Kohl

iPhone应用程序中是否有用于设置首选项的库或框架?

  •  5
  • Jens Kohl  · 技术社区  · 15 年前

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

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

    在我看来,独自完成表格是一项艰巨的任务,所以如果有一个框架来完成这类任务的话,我是不会同意的。不幸的是,苹果似乎没有提供自己的解决方案。也许有人知道Web上描述最佳实践的框架或文章。

    如果你不理解我所指的模式,我做了一个截图: http://img.skitch.com/20090625-s8bf6ahybwe3cesd1id38h3nt.jpg

    5 回复  |  直到 10 年前
        1
  •  8
  •   Ortwin Gentz    14 年前

    退房 http://www.inappsettingskit.com . 它在几个应用程序中使用,并且被积极维护(由我自己和其他人)。

        2
  •  3
  •   Jens Kohl    15 年前

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

        3
  •  2
  •   Kendall Helmstetter Gelner    15 年前

    最好在应用程序中设置,至少在苹果让用户轻松发送到设置中,然后再返回应用程序之前。如果你看一下新的3.0 UITableViewCellStyles,有一种样式是为进行设置而量身定做的,类似于单元格,它可以很容易地构建一个简单的设置屏幕。

        4
  •  1
  •   Grouchal    15 年前

    如果你在做设置,我建议你把它们放在正确的地方,然后使用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];
    

    这对我重现您所说的界面很有用——这里的示例是一个文本字段——但是相同的代码在所有控件中都非常有效。

        5
  •  0
  •   JMonroe    15 年前

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

    我还不知道这样的事情,但是,我真的可以用一个,我已经考虑写一个。