使用扩展的UITablviewcell添加新单元格

时间:2017-07-14 07:36:38

标签: ios objective-c xcode uitableview expand

在我的应用程序中,我已经完成了膨胀表视图单元格,我需要再次扩展单元格。我面临着再次插入扩展单元格的问题。是否可以这样做?

//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")

    }

}

1 个答案:

答案 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;
}