切换显示/隐藏子表格单元格iOS

时间:2012-10-25 18:17:47

标签: ios uitableview

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

我已下载并查看了Apples“Table View Animations and Gestures”示例。 我希望有人可能知道一种更简单的方法来完成我的要求。

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

编辑代码:

我按照上面的解释做了一个简单的例子。代码在Github上,随时可以询问有关它的任何问题。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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