我需要你的帮助才能找到解决问题的最佳解决方案。 我有TableView的动态数据(JSON解析)。我的tableView包含一些部分(也是从JSON解析)。我必须检测每个部分中的最后一个单元格,并在自定义后添加圆角。 (如iOS 10上的新通知视图)
所以我已经尝试过这段代码:
NSInteger sectionsAmount = [tableView numberOfSections];
NSInteger rowsAmount = [tableView numberOfRowsInSection:[indexPath section]];
if ([indexPath section] == sectionsAmount - 1 && [indexPath row] == rowsAmount - 1)
有了这部分代码检测和圆角,只有所有tableview中的最后一个单元格没有每个部分中的最后一个...请帮助任何人。
解决方案:(完美地为我工作)
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
NSInteger numberOfRows = [tableView numberOfRowsInSection:indexPath.section];
if (indexPath.row == (numberOfRows-1)) {
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:cell.bounds byRoundingCorners:( UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path = maskPath.CGPath;
cell.tag = 1;
cell.layer.mask = maskLayer;
}
}
禁止重装电池
-(void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell = (ScheduleCell*)[cell viewWithTag:1];
[cell removeFromSuperview];
}
答案 0 :(得分:3)
您不应该查看现有的tableView部分等。
由于您不需要对屏幕上不可见的单元格和部分执行此操作。
最好的方法是检查保存每个部分信息的datasource
。
此检查应改为tableView:cellForRowAtIndexPath:方法。您可以检查单元格indexPath.row
是否是包含信息的dataSource的最后一个单元格,并在那里或tableView:willDisplayCell:forRowAtIndexPath:中进行自定义。
修改强>:
我误解了你的问题。
以下是您在上述方法中可以执行的检查:
NSInteger numberOfRows = [tableView numberOfRowsInSection:indexPath.section];
if (indexPath.row == (numberOfRows-1)) {
}
或者如上所述检查我认为更清洁的数据源:
NSInteger numberOfRows = myDataSourceNumberOfRowsForIndexPathSection;
if (indexPath.row == (numberOfRows-1)) {
}