有幾個界面就建幾個文件夾
每一個文件夾中都有三個文件夾,(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就是屬性的值