【问题标题】:best way to build iphone settings screen构建 iPhone 设置屏幕的最佳方法
【发布时间】:2011-01-02 22:35:37
【问题描述】:

我正在为 iPhone 应用程序构建一个设置屏幕,它应该类似于分组表视图。每个“单元格”的行为都应该像一个按钮。大多数单元格只有一个图像视图、标签视图和显示指示器。除了标签之外,还将显示一个值。所有这些按钮都将在点击时呈现一个新视图。

现在,如何实现呢?我正在考虑只布置一组带有自定义背景图像的按钮,或者最好只使用表格视图。如果是这种情况,应该如何实施。到目前为止,我只使用表格视图来显示某种动态数据,其中每个单元格都显示相同的基本详细视图。我很想知道如何设置 cellForRowAtIndexPath。这会包含某种 switch 语句来单独配置每个单元格,还是有更简单的方法来处理所有这些?

【问题讨论】:

  • 95% 的设置应用程序是分组的表格视图。只是说。

标签: iphone uikit interface-builder


【解决方案1】:

InAppSettingsKit 是一个开源项目,可在您的应用内重新创建设置应用以保持 UI 一致性。你可以把它拆开来得到你的答案。

【讨论】:

  • 我最终出于学习目的自行滚动,但除此之外 IASK 是天赐之物。 +1
【解决方案2】:

您需要使用UITableViewController 并将部分设置为UITableViewStyleGrouped

每个组都是一个部分,因此您需要使用- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 返回您拥有的部分。

对于每个部分,您想用- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 指定有多少行。

您需要使用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 自定义每个单元格(顺便说一下,它会告诉您正在indexPath 变量中修改哪个部分的特定行)。

最后,您需要使用 XCode 为您提供的模式来处理 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 中的行点击:

[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    设置应位于 iPhone 上的“设置”“应用”下。通过将 Settings.bundle 添加到您自己的应用程序,您自己的应用程序设置将合并到标准设置中。

    它直截了当,风格一致。

    这里描述了如何做到这一点:

    http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Preferences/Preferences.html%23//apple_ref/doc/uid/TP40007072-CH6-SW1

    【讨论】:

    • OP 正在询问如何在他自己的应用中模仿它。
    【解决方案4】:

    首先,如果您的应用程序有不经常修改的设置,您应该更喜欢创建一个设置包。但是如果您需要像在游戏中一样在应用程序中频繁更改设置,您应该自己创建设置屏幕。

    大多数情况下,屏幕应与设置默认屏幕匹配。为此,您必须使用带有自定义单元格的 tableView。您可以根据设置类型在表格单元格中使用以下控件。 1. alabel---用于静态文本, 2. 一个开关 --- 用于具有两个值的设置(ON/OFF 或 o/1 或任何两组值),例如夜间模式开/关, 3.滑块----用于指定值的范围,例如亮度等。

    您可以在表格视图的 cellForRowIndex 委托方法中根据行索引进行配置。您还可以创建部分以将类似类型的设置分组到一种类型下。

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2022-01-04
      • 2012-12-18
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多