如何为UITableViewController添加手风琴效果?

时间:2015-06-26 07:59:47

标签: ios iphone xcode uitableview cocoa-touch

这是当前屏幕: The current screen

如您所见,这是提供的服务列表。我从公司的api中检索了数据,并且动态填充了表格视图单元格。

以下是它应该如何工作: How it looks on Android The desired functionality

单击其中一个单元格时,类似手风琴的效果应扩展单元格并显示特定服务的更多详细信息。再次单击它或单击其他服务应该关闭它。我该如何实现呢?

以下是rn的代码:

cellForRowAtIndexPath

}

我目前正在使用Xcode 6.3.2和最新的iPhone SDK。

感谢任何帮助。感谢。

1 个答案:

答案 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是做这些事情的正确场所