1、使用tableview的分界线,但是界面下面有一些没有数据但是还是显示了分界线
//隐藏多余cell
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
2、去掉navigationitem下面的阴影
self.navigationController.navigationBar.shadowImage = [UIImage new];
3、删除cell
cell.discardClose = { currentCell in
let currentIndexPath = self.tableView .indexPath(for: currentCell)!
self.dataList.removeObject(at: currentIndexPath.row)
self.tableView.beginUpdates()
self.tableView.deleteRows(at: [currentIndexPath], with: .none)
self.tableView.endUpdates()
}
4、在 Cell 内部获取父控制器
在 Cell 内部获取父控制器,在 Cell 内部调用控制器的一些耦合性比较小的代码,一定程度上也能达到瘦身的目的。如在 Cell 中有个返回按钮,需要当前父视图控制器返回 Push 到它之前的控制器,那么就需要在自定义 Cell 中拿到当前的父视图控制器做 Pop 操作。
- (UIViewController *)viewController {
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder *nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}
简单方法
UITableView *tableView = (UITableView *) self.superview;
UIViewController *superController = (UIViewController *)tableView.dataSource;
5、使用tableview estimatedRowHeight 自适应高速度时刷新跳动解决方案
[UIView performWithoutAnimation:^{
[weakSelf.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
}];
6、局部刷新的问题
tableview.beginUpdates()
tableview.reloadRows(at: tableview.indexPathsForVisibleRows!, with: .none)
tableview.endUpdates()