先看下效果
实现这两个需求很简单,因为TableView的tableHeaderView和tableFooterView这两个属性都是UIView类型的,我们只需要给TableView的tableHeaderView和tableFooterView赋值两个UIView类型就可以了。
-
tableHeaderView
对于头部tableHeaderView的实现需要用到之前介绍的图片轮播demo( ScrollView实现图片轮播及封装自定义控件)
把该项目中的实现文件直接拖入到现有的项目中
-
针对于之前的轮播控件封装,我们只需要在调用时给该控件的imageNames赋值即可。
WXPageView *pageView = [WXPageView PageView]; pageView.imageNames = @[@"2c97690e72365e38e3e2a95b934b8dd2", @"5ee372ff039073317a49af5442748071", @"9b437cdfb3e3b542b5917ce2e9a74890", @"37e4761e6ecf56a2d78685df7157f097", @"2010e3a0c7f88c3f5f5803bf66addd93", @"53453be0d2dd458c057286d17f6b9306"]; // 头 self.tableView.tableHeaderView = pageView;
-
tableFooterView
- tableFooterView和tableHeaderView的实现思路是一样的,只是为了实现点击加载更多这个需求我们还需要对该需求进行说明
- 实现思路
-
通过xib文件进行布局,其中内容如下图。
注意红框部分,里面还包含一个UIView,这个UIView里面包含loading展示的界面。
-
当点击加载更多时把LoadMoreButton设为隐藏,正在加载更多设为展示。
- 关键点为tableView的controller和子控件的交互。这里用的是通知的方式。
在tableView的controller中监听通知
// 在tableView的controller中监听通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loadMoreDeals) name:@"loadMore" object:nil]; /** * 一定要在dealloc中移除通知!一定要在dealloc中移除通知!一定要在dealloc中移除通知! */ - (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self]; }
在子控件的点击加载更多按钮的响应事件中发送通知
- (IBAction)loadMore:(id)sender { self.loadMoreButton.hidden = YES; self.loadingMoreView.hidden = NO; // 发送通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"loadMore" object:nil];
-