【问题标题】:Toggle showing/hiding child table cells iOS切换显示/隐藏子表格单元 iOS
【发布时间】:2012-10-26 21:57:28
【问题描述】:

我正在尝试创建一个包含 STATES 和 CITIES 的 UITableview。首先,我希望表格只显示状态,每个值在单元格的右侧都有一个向下的披露箭头,让用户知道它下面有值。如果用户单击箭头,表格将展开以显示与所选州关联的 CITIES。然后,用户可以选择一个城市,或者单击一个向上的披露箭头,然后“隐藏”这些城市。

我已经下载并查看了 Apple 的“表格视图动画和手势”示例。 我希望有人可能知道一种更简单的方法来完成我的要求。

http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html

【问题讨论】:

    标签: ios uitableview


    【解决方案1】:

    很好地解释了你想要做什么。这就是我解决这个问题的方法,我认为在不给你无意义的代码和回答你可能遇到的任何编码问题的情况下解释它会更容易。

    我会将表视图数据源设置为数组数组。这个想法是数组中的每个索引都代表一个州,因此包含许多城市,因此索引包含一个数组(城市数组)。父数组(州)在开始时为空,但稍后将填充它的(城市)数组将填充适当的城市。

    然后我将设置表格视图以包含部分(我很想在这里放代码,但请继续阅读)。这些部分将代表城市。然后,您可以使用(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 委托在表格视图中填充部分。在第一次运行时,您可以在每个部分使用一个单元格填充实际表格(可能使用“扩展”或“更多”一词和向下箭头)。当用户触摸该单元格时,您可以使用 didselectrowatindexpath 来了解触摸了哪个部分(indexpath 对象包含该部分),现在您知道它是哪个部分,只需通过添加该部分的城市数组来修改数据源数组数组(父数组)并更新tableview。

    这实质上为您的 tableview 提供了相应的样式和感觉。它很容易实现,但需要一点代码。我已经这样做了,并且愿意提供您可能需要的代码,最棘手的部分是以正确的方式更新 tableview。

    编辑代码:

    我按照上面的解释做了一个简单的例子。代码在 Github 上,有任何问题欢迎随时提问。

    【讨论】:

    • 感谢 Sparq 的解释。我对代码感兴趣,如果你方便的话。我喜欢手风琴的比喻,这正是我正在寻找的。​​span>
    • 好的,让我们建立一个聊天室,我可以引导您完成我所做的一切。如果您理解我发布的帖子,我们应该立即启动并运行它。
    【解决方案2】:

    我认为表示此信息的更好方法是拥有一个包含状态的 UITableView,每个状态显示一个指向右侧的小箭头。然后,当用户单击该州时,加载下一个 UITableView,显示该特定州的所有城市。使用 UIViewController 推送 City 列表将允许用户轻松返回 States 列表。

    这种方法对 iOS 用户来说更有意义,因为这是他们期望 Tables 工作的方式。

    有很多教程解释了如何使用 UITableView。 Here 是一个包含许多 UITableView 教程的站点的链接。我链接到的教程解释了将 UIViewController 推入堆栈,以便有一个简单的后退按钮返回状态列表。

    【讨论】:

    • 感谢您的回复,丹。我同意您的方法遵循用户期望表格工作的正常方式,但我觉得我所追求的方法看起来会好很多,并且仍然非常直观。
    【解决方案3】:

    通常这样的事情是通过切换到另一个视图并显示有关单元格的更多细节来完成的。

    您可以通过实际制作自定义UITableViewCell 来实现您想要的,其中包含带有箭头图像的UIButton 和UITableView。如果第一次单击按钮,您可以重新加载您的单元格并创建可以显示城市的内部UITableView。再次单击只会再次重新加载单元格,并且根本不会返回内部UITableView。您还需要在某处保留选定状态,因为您可能需要重新加载上一个单元格并隐藏内表,以防单击其他单元格中的箭头。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2018-02-24
    • 2012-03-19
    • 2017-08-05
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多