写项目
1、自定义tabBar
vc或nav作为它的子控制器
设置图片或选中下的图片
2.一个表上使用多个自定义类cell
可新建多个cell类,统一类注册,统一出列。不同的区不同的行return不同的cell。
3.在if非语句中自定义cell:常用于自定义区头
自定义区头注意contentView
防止循环引用:直接在语句内return headView,在语句外 — return nil
4.类别的方法和类方法的区别
类别的方法是扩充的:"使用者"直接用
类方法:需要把"使用者"当参数传进去
对象方法:需要把"使用者"当参数传进去
5.collctionView和表
一片内容对应一项
确定好有几个区
每个区都注册自定义类,布局好
6.自定义类里创建控件
表单元格优选drawrect
懒加载重写get
初始化init
## 7.点击按钮之小红条 ##
先设置label的center和bunds
再改变它的center
设置选中状态和非选中状态的颜色
selectIndex 和 tag 分别对应上一个btn和当前btn
多个同类型的字典就是一个model类
model类和model类之间通过 属性数组 联系
取:Model1*model1 = self.dataArray【】;
Model2*model2 = model1.subdataArry【】;
从数组里取出model
属性设置:设置区内部的行间距和列间距
代理方法1:设置区距外边缘的上左下右 间距
代理方法2:设置每个Item的大小
代理方法3:设置区头高度
上层VC作为底层VC的childVC,底层view add到 上层的view
滑动方法内发通知:监听索引变化
set方法内更新数据
viewDidLaod:发网络请求 更新数据 加载非表控件
## 12.数据传递 ##
传index和数组
一个方法写下拉刷新,开始刷新,上拉加载
方法内部加请求
viewDidLoad注册,表内出列
自定义控件:可以重写自定义类的init方法添加到self;也可以在
cellForRow方法上写
尽量分区
plan下的分区,可以卡住区头
## 15.多个button只选一个 ##
找上个button,改状态
变量重新赋值
## 16.设置按钮边框 ##
button.layer.borderWidth = 0.5f
button.layer.borderColor = [UIColor grayColor].CGColor
button.layer.masksToBounds = YES
## 18.去除数组中的重复对象的方法 ##
// 将数组重复的对象去除,只保留一个
- (NSMutableArray *)arrayWithMemberIsOnly:(NSArray *)array
{
NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
for (int i = 0; i < array.count; i ++) {
if ([categoryArray containsObject:[array objectAtIndex:i]] == NO) {
[categoryArray addObject:[array objectAtIndex:i]];
}
}
return categoryArray;
}
## 19.通知传值 ##
先监听
再发通知
调用通知方法:text.userInfo是字典
- (void)tongzhi:(NSNotification *)text
{
NSLog(@"%@",text.userInfo[@"textOne"]);
NSLog(@"-----接收到通知------");
}
单行文本:sizeWithAtrributes
多行文本:bondingRectWitnSize
center:CGPOintMake:(Center_X+R*cos(button.single*M_PI/180) , Center_Y + R*sin(button.single*M_PI/180))
bounds:
## 22.自定义按钮的声明 ##
@interface Mybutton : UIButton
@end
## 22.多个按钮之————只有一个有选中状态 ##
找到上一个按钮,选中状态设为NO
##23 按钮的逻辑 ##
给model类BOOL选中属性,给单元格BOOL选中属性
1.cell上的图片:
2.区头按钮:
3.全选按钮:
1.遍历model类,计算处于选中状态的model 的价格
2.全选按钮:状态=按钮的tag值
3.cell上的按钮:传cell得到indexPath,再找到cell上的model类