创建mvc

时间:2023-03-09 02:18:41
创建mvc
有几个界面就建几个文件夹
每个文件夹中都有三个文件夹,(models,Controllers,views)
创建一个common 和一个Base文件夹(先建文件夹,可以直接拉进去)
common的目的是创建第三方框架
Base是其他基础(Baseviewcontroller 和BasenavigationController,BaseTabBarController)
创建PCH(预编译文件)文件(目的是在整个文件编译之前导入头文件,避免重复导入)
导入预编译的文件
1Base文头文件
 宏定义
2#define  新名  旧名
 3common文件
  common文件有第三方的头文件(common的类型是 Header File文件)
//创建窗口
//创建标签控制器
 设置为窗口的足视图控制器
 设置标签控制器的控制器数组
 for ( in){  }//遍历数组????
初始化控制器数组(NSClassFromString(类名),控制器的初始化[NSClassFromString(类名) alloc] init],这个控制器初始化的值用父类来接收)
设置 控制器的TabBarItem.title 
                       TabBarItem.image
初始化导航控制器的数组设置根视图为上面初始化的控制器
//在每个视图控制器的init方法中加入每个视图控制器的标题
   控制器.title = @“标题”;(注如果不设置title的话,默认设置的是控制器.TabBarItem.title )
//NavigationBar的背景颜色和字体
 在BaseNavigationController里进行设置
 self.navigationBar.backgroundColor//这样不是我们想要的
//定制一个类的外貌直接作用于父类??
推荐使用
//定制系统状态栏风格??(如果隐藏了导航栏的话,要重写这个方法)
//主页面
 隐藏导航控制器
新建一个自定义导航控制器的视图
新建一个自定义的导航控制器器的背景图
在导航控制器中放控件
左侧安钮
button的文字的偏移属性
button的图片的偏移属性
记住当一个视图控制器有导航控制器 和标签控制器的时候,当这个视图控制器pushViewController的时候push到的控制器页拥有了标签控制器 和 导航控制器
//如果相似的文件中代码重复多的话,我们可以写这几个相似文件的父类
//在视图控制器中
这3中方法的先后顺序
-(id)init
-(void)loadView
-(void)ViewDidLoad(在这时候这个控制器的View才能显示出来,才能在这个控制器的View上加其它的视图)
NavgationBar 自带一个边缘手势(就是我们滑动的时候可以返回到上一个界面(但我们把Navgationbar隐藏的时候,这个边缘手势也就没有了))
一般创建手势的时候,我们一般用swipe的清扫手势
- (void)swipeAction:(UISwipeGestureRecognizer *)swipe {

switch (swipe.direction) {
        case UISwipeGestureRecognizerDirectionRight:

        {
            CGPoint point = [swipe locationInView:self.view];//这个是判断这个手势的点在这个控制器的View里面的位置
           
            if (point.x < 20) {
               
                [self.navigationController popToRootViewControllerAnimated:YES];
            }
        }//记住,当Case里面使用的是函数的时候可以不用大括号,但是当调用方法的时候必须使用大括号
            break;
           
        default:
            break;
    }
}
//当用代码写的时候必定用
-(id)initWithFram:(CGRect)fram{
}
//当用xib进行加载的时候
—(void)awakFromNib{
}
//怎么才能走到这个类里面,必须复写init方法
//表视图
(两个必须实现的方法)datasource
//1返回单元格的个数
//2每个单元个的样子{
     //设置一个标识符
   我们的单元格首先要到tableView(表视图)复用池里面去取,根据就是标志符
 static NSString *identfier = @"HomeCell";
   
    HomeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
//判断复用池里有没有带有标志符的cell,
如果没有的话我们就去创建
    if (!cell) {
    cell = [UITableview alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
//delegate
//行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

return 150;

}
/声明代理的时候必须用assign
@property (nonatomic, assign)id <HomeTableViewDelegate> scrollDelegate;  
//图片的加载
   加载本地的图片方式
  加载网络图片方式
  URL是图片在网路上的存储地址
当一个变量用的次数多的时候就声明为全局变量,当用的次数不多的时候那么就用tag值
 // 过渡形式实现翻转动画
    UIViewAnimationTransition transition = flip?UIViewAnimationTransitionFlipFromLeft:UIViewAnimationTransitionFlipFromRight;
//注意
   // 3.数据传递。(一是数据,二是子视图 当二者全部存在是才能完成数据的传递)
    _tableView.dataList = _homeModels;
   
    _posterView.dataList = _homeModels;
   @property (nonatomic, strong)HomeModel *model;//注意model属性用 strong
//把字典存储为一个类的形式,属性就是key值,value就是属性的值