在我的应用程序中,我已经完成了膨胀表视图单元格,我需要再次扩展单元格。我面临着再次插入扩展单元格的问题。是否可以这样做?
//cellForRowAtIndexPath:
[cell.expandButton addTarget:self action:@selector(expandAction:) forControlEvents:UIControlEventTouchUpInside];
if (indexPath.item < [array count] + 1) {
NSLog(@"Show one cell”);
}else{
NSLog(@"Show another cell")
}
//Button action
-(void) expandAction:(UIButton*)sender{
if (indexPath.item < [array count] + 1) {
NSLog(@"Show one cell”);
}else{
NSLog(@"Show another cell")
}
}
答案 0 :(得分:0)
如何生成tableView数据?如果你使用对象数组,那么你可以这样做:
CellItem类保存单元格状态
@interface CellItem : NSObject
@property BOOL isExpanded;
@end
您的自定义单元格类。 Setup方法根据CellItem对象状态
自定义您的单元格@interface ExpandableCell : UITableViewCell
- (void)setupWith:(CellItem *)cellItem;
@end
@implementation ExpandableCell
- (void)setupWith:(CellItem *)cellItem {
if(cellItem.isExpanded) {
//Expand your cell
} else {
//Don't exp and
}
}
@end
您获取tableView数据的对象数组
@property NSArray<CellItem *> *items;
协议,定义单元状态委托的方法。在类中实现此方法,该类也是yourtableView的委托。每次用户展开/关闭它时,都会从单元格中调用此方法。在实现中保存项目数组中的cellItem。
@protocol ExpandableCellDelegate
- (void)cellDidChangeStateWithCellItem: (CellItem *)cellItem;
@end
UITableView单元格是可重复使用的,因此每次单元格都出现在屏幕上,您应该再次自定义它。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CellItem *cellItem = self.items[indexPath.row];
ExpandableCell *cell = (ExpandableCell *)[tableView dequeueReusableCellWithIdentifier:@"InsertYourCEllID"];
[cell setupWith:cellItem];
return cell;
}