这是当前屏幕:
如您所见,这是提供的服务列表。我从公司的api中检索了数据,并且动态填充了表格视图单元格。
以下是它应该如何工作:
单击其中一个单元格时,类似手风琴的效果应扩展单元格并显示特定服务的更多详细信息。再次单击它或单击其他服务应该关闭它。我该如何实现呢?
以下是rn
的代码:
cellForRowAtIndexPath
}
我目前正在使用Xcode 6.3.2和最新的iPhone SDK。
感谢任何帮助。感谢。
答案 0 :(得分:2)
您应该向表格视图ob点击插入新单元格(或多个)。并注册点击,以便您知道选择了哪个单元格
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];
if(self.selectedCellPath) { //Index path for already expanded cell
[tableView deleteRowsAtIndexPaths:@[self.selectedCellPath] withRowAnimation: UITableViewRowAnimationTop];
}
//if we clicked already expanded cell we just clear everything
if([self.selectedCellPath isEqual:indexPath]) {
self.selectedCellPath = nil;
}
else {
self.selectedCellPath = indexPath;
[tableView insertRowsAtIndexPaths:@[self.selectedCellPath] withRowAnimation: UITableViewRowAnimationTop];
}
[tableView endUpdates];
}
而且,在你cellForRowAtIndexPath
if([indexPath isEqual:self.selectedCellPath]) {
//Create your specific cell with text fields
}
else {
//Create your common cell
//Your code for cell creation from question post actually goes here
}
更新1
一点性能建议 - 将所有Image *
代码移至viewDidLoad
方法。并为您的控制器设置NSArray *images
属性。 '在您的变体中,每次表格视图要求单元格时都会创建它。你不需要这个。做一次 - viewDidLoad
是做这些事情的正确场所