0825-QQ好友列表点击展示下拉(应用程序图片点击下载 - 保留tableView cell)(数据传递之 - block方法)(数据传递之 - 通知)(静态单元格 - tableview静态创建cell)(控件不显示原因 打印父控件的frame是否为 0000)
------------------------
0825-QQ好友列表点击展示下拉
1、新建FriendModel
2、拖控件 tableViewController 指定类为viewController
3、实现数据源方法
4、隐藏状态栏
5、titleForheader方法 返回没个节组的头部文字 这个后面注释掉
6、heightForHeader方法
7、自定义 UITableViewHeaderFooterView
方法1:UITableViewHeaderFooterView *header = [tableView dequeReusableHeaderFooterViewWithIdentifier:ID];
header里面添加一个button
方法2:自定义tableHearderView = 自定义UIView 画一个imageView 2个 label
8、layoutSubviews 当 当前控件frame被系统从0改成了相应的高度宽度 有值 这里子控件可以修改其frame
而不能在- (id)initWithReuseIdentifier:(NSString *)reuseIdentifier 这个方法里设置子控件的值
因为self(UITableViewHeaderFooterView)是父控件 frame还是 (CGRect){{0,0}{0,0}}
9、btn.contentHorizontalAlignment
btn.contentEdgeInsets btn.imageEdgeInsets btn.titleEdgeInsets = UIEdgeInsetMake(0,10,0,0);
10、点击headerView 让组的cell数量变成0
这样就只剩headerView了
11、groupModel添加属性 @property (nonatomic,assign) BOOL open;
12、headerview 通知delegate(控制器)刷新表格
@property (nonatomic,assign) id<FFHeaderViewDelegate> delegate;
13、数据传递之-代理方法 block方法 通知方法
14、重写tableHeaderview(继承自UITableViewHeaderFooterView)的方法 didMoveToSuperView
小箭头图片的乡下转90度
15、图片选择后会变形 解决方法
------------------------------
应用程序图片点击下载 - 保留tableView cell
storyboard - table view - table view cell 设置为custom 设置可重用标识符为apps 里面拖控件
实现数据源方法- cellForRowsInSection
[tableview dequeReusableCellWithIdentifier:@"apps"]
新建一个FFAppsTableViewCell
让storyboard中的cell指定FFAppsTableViewCell类占用
连线storyboard中的cell中的button imageview label 控件 到 FFAppsTableViewCell的属性上 方便 其访问和修改该属性的值
button的disabled状态下文字和背景图片的设置
cell上的button图片属性点击修改后 需要修改该cell保存的数据 self.appmodel.isDownload = YES;
#warning 当cell 重用的时候 应该注意 : 在重用cell 的时候 应该 该变cell上所有控件的状态

// CZAppsTableViewCell.m #import "CZAppsTableViewCell.h" #import "CZAppsModel.h" @interface CZAppsTableViewCell() @property (weak, nonatomic) IBOutlet UIImageView *imgView; //连线storyboard中的 table view controller - table view - cell @property (weak, nonatomic) IBOutlet UILabel *nameLbl;//连线 @property (weak, nonatomic) IBOutlet UILabel *introLbl;//连线 @property (weak, nonatomic) IBOutlet UIButton *downloadBtn;//连线 @end @implementation CZAppsTableViewCell - (IBAction)downloadClick:(id)sender { UIButton *btn = (UIButton *)sender; btn.enabled = NO; //代表已下载 self.apps.isDownload = YES; } + (instancetype)appsTableviewCellWithTableview:(UITableView *)tableview { return [tableview dequeueReusableCellWithIdentifier:@"apps"]; } - (void)setApps:(CZAppsModel *)apps { _apps = apps; #warning 当cell 重用的时候 应该注意 : 在重用cell 的时候 应该 该变cell上所有控件的状态 self.nameLbl.text = apps.name; self.imageView.image = [UIImage imageNamed:apps.icon]; self.introLbl.text = [NSString stringWithFormat:@"%@|%@",apps.size,apps .download]; self.downloadBtn.enabled = (apps.isDownload == NO); }
----------
数据传递之 - block方法
(
block 知识回顾
Block在程序运行时产生的一段代码
与函数不同( 函数是在程序编译前写好的 )
)
HMHeaderView.h
// 有的人用strong 也可以
(UIImage *)p p指针指向 UIImage类型变量 HMHeaderViewBlock block 指向函数类型的指针变量block
控制器里
viewForHeaderInSection
{
}
HMHeaderView.m
-------
数据传递之 - 通知
1、添加监听者为控制器 监听通知名称 friend (nil 任何对象发布的通知)
控制器viewDidLoad
2、点击按钮 发布通(通知名称为 friend)
HMHeaderView.m - nameBtnClick
3、控制器监听到 friend通知
开始执行notiClick方法
4、销毁通知
控制器里销毁通知
通知必须要在控制器消失的时候做销毁操作
这里还可以在willDisAppear里销毁通知
--------------------
静态单元格 - tableview静态创建cell
纯拖控件 一行代码不用写 - 仅仅了解即可 工作中还是用代码来创建动态单元格
1、拖控件table view controller
2、让UIViewController 改成继承UITableViewController
3、写数据源方法
可重复使用cell创建写入代码块
4、创建plist文件 3组 每组不同行数
5、选中storyboard中tableView ,设置content属性为 static cell
这时候 table view下的table view cell上一层上面多了一个 table view sections了
6、story board - table view sections控件 设置rows为1
7、story board - table view sections - table view cell 设置style 为 basic image设置一张图片
8、设置story board - table view sections - table view cell - content view - label 设置text属性 为 我的好友动态
9、选择story board - table view - 设置sections为3 自动会将设置好的那个section 变成3个都设置一样的section了
10、选择story board - table view -Section-2 设置 rows为2
11、选择story board - table view 设置row height为64
12、选择story board - table view -Section-1 设置Header为空
------------------
控件不显示原因 打印父控件的frame是否为 0000
----------------
其他:
静态方法中不用static NSString *string; 只用NSString *string就可以了