【问题标题】:dynamically add/remove rows in an iOS View (like rules in Mail)在 iOS 视图中动态添加/删除行(如邮件中的规则)
【发布时间】:2013-01-11 16:31:03
【问题描述】:

我正在开发一个应用程序,该应用程序具有需要配置商店营业时间的视图。

所以有一个包含一周中所有日期的列表:
- 星期一从 [10:00] 到 [12:00] (-) (+)
- 周二 [10:00] 至 [12:00] (-) (+)
从 [14:00] 到 [18:00] (-) (+)
- 星期三 (+)
- 星期四 (+)
- 周五 [10:00] 至 [18:00] (-) (+) - 星期六 (+)
- 星期日 (+)

因此每天可以有多个营业时间。按 (-) 按钮删除行,按 (+) 添加一行。

我想像邮件中的规则配置一样实现这一点。 (还不能提供截图,因为这是我的第一个问题)

我假设这可以像 tableview 一样实现,每天都有一个 UITableView,每一行都是打开时间的间隔。但我不确定。 如果是这样,我如何动态调整表格视图的大小以仅显示必要的行?然后我该如何重新排列布局,以免重叠?

更好的是一种更简单的方法,或者一个处理类似事情的框架。

非常感谢您的帮助!

【问题讨论】:

  • Apple 提供了一些 UI 指南,我不确定在 ios 中是否允许使用这种嵌套的 tableview。对于 Mac OS,我在一个项目中有这样的代码。

标签: ios objective-c dynamic tableview rows


【解决方案1】:

在我看来,使用 UITableView 无疑是一个好方法。为了管理不同大小的行,一个好的技术是为 UITableViewCell 类创建一个静态方法,该方法在给定单元格应该显示的内容的情况下返回 CGFloat 高度。例如,如果单元格需要显示一些文本,您可以创建一个类似的方法:

+ (CGFloat)heightForCellWithText:(NSString *)text

请记住,此信息需要通过 UITableViewDelegate 的 tableView:heightForRowAtIndexPath 方法传递。这种技术的美妙之处在于,您实际上不需要创建 UITableViewCell 实例来确定它的高度 - 一旦需要,它就会被计算并传递给 TableView,无论该实例是否已经分配。

希望这能给你一个正确的方向

【讨论】:

    【解决方案2】:

    有一些苹果委托方法为您提供了使用一些委托方法编辑表格视图的功能。

    您还可以删除您的行并在表格中添加新行。但请记住,在添加或删除行时,您必须每次都更新您的数据源。

    这里很难解释所有这些方法。但是有一些示例项目已经实现了您想要的所有这些功能。

    查看示例项目以编辑表格视图样式here Sample Code

    另一个示例代码是sample project 2

    我希望这会帮助你并解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-23
      • 2011-04-29
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多