1. tableView中的数据发生改变后,往往UITab 了 View中的数据没有更新,通常需要滚动后才更新。
这是因为重绘机制的问题, 解决方案有:在需要刷新界面的地方加入:
[self.tableView reloadData];
[self.tableView reloadSectionIndexTitles];
或者在viewWillAppear中加入这两句:
- (void)viewWillAppear:(BOOL)animated{
[self.tableView reloadData];
[self.tableView reloadSectionIndexTitles];
}
下面转自 http://blog.sina.com.cn/s/blog_7ac99d1801016jgh.html
这两句可以起到刷新UITableViewCell的作用,但是如果section的数据发生了改变,则没有被刷新。
后来在 http://stackoverflow.com/questions/8306792/uitableview-reload-section 发现了一个给出的
方法:
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:
(UITableViewRowAnimation)animation
完整的可以这么写:
NSRange range = NSMakeRange(section, 1);
NSIndexSet *sectionToReload = [NSIndexSet indexSetWithIndexesInRange:range]; [self reloadSections:sectionToReload withRowAnimation:rowAnimation];
2. 自定义UITableViewCell:
(1)可以在storyborad的tableViewCell中布局,然后设置控件的tag,cell通过getTag方法可以获得对
应的控件,然后再对这些控件 设值。
(2)在 tableView: cellForRowAtIndexPath: 方法中,用代码写控件,然后调用cell的addSubView
方法,将这些控件加到cell中,即可自定义cell。
3. 自定义section
用到两个方法:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView* myView = [[UIView alloc] init];
myView.backgroundColor = [UIColor whiteColor];
// 自定义View
return myView;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
// 设值section的高度
return 30;
}
4.隐藏UITableViewCell的分隔线
[self.myTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
UITableViewCellSeparatorStyle有如下几种
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
UITableViewCellSeparatorStyleNone,
UITableViewCellSeparatorStyleSingleLine,
// This separator style is only supported for grouped style table views currently
UITableViewCellSeparatorStyleSingleLineEtched
};
5. 去除点击效果
cell.selectionStyle = UITableViewCellSelectionStyleNone;
6. 点击效果:点击之后消失
[tableView deselectRowAtIndexPath:indexPath animated:YES];
7. uitableview处理section的不悬浮,禁止section停留的方法,主要是这段代码
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 50;
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
8. 设置tableView的背景为透明方法:
单元格要再设为透明,Cell.backgroundColor=[UIColor clearColor];