storyboard文件的認(rèn)識(shí)
- 用來(lái)描述軟件界面
- 默認(rèn)情況下,程序一啟動(dòng)就會(huì)加載Main.storyboard
- 加載storyboard時(shí),會(huì)首先創(chuàng)建和顯示箭頭所指的控制器界面
IBAction和IBOutlet
- IBAction:
- 本質(zhì)就是void
- 能讓方法具備連線的功能
- IBOutlet
- 能讓屬性具備連線的功能
storyboard連線容易出現(xiàn)的問(wèn)題
- 連接的方法代碼被刪掉,但是連線沒(méi)有去掉
- 可能會(huì)出現(xiàn)方法找不到錯(cuò)誤
- unrecognized selector sent to instance
- 連接的屬性代碼被刪掉,但是連線沒(méi)有去掉
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
UIViewController(控制器)的認(rèn)識(shí)
- 一個(gè)控制器負(fù)責(zé)管理一個(gè)大界面
- 控制器負(fù)責(zé)界面的創(chuàng)建、事件處理等
類(lèi)擴(kuò)展
- 格式
@interface 類(lèi)名()
/** 屬性、方法的聲明 */
@end
- 作用
- 為某個(gè)類(lèi)增加額外的屬性和方法聲明
- 可以寫(xiě)在.h和.m文件中
項(xiàng)目屬性
- Product Name
- 軟件名稱(chēng)、產(chǎn)品名稱(chēng)、項(xiàng)目名稱(chēng)
- Organization Name
- 公司名稱(chēng)、組織名稱(chēng)
- Organization Identifier
- 公司的唯一標(biāo)識(shí)
- 一般是公司域名的反寫(xiě),比如com.520it
- Bundle Identifier
- 軟件的唯一標(biāo)識(shí)
- 一般是Organization Identifier + Product Name
外部文件添加到項(xiàng)目時(shí)的正確勾選

添加文件到項(xiàng)目時(shí)的正確選擇.png
常見(jiàn)問(wèn)題
- 項(xiàng)目里面的某個(gè).m文件無(wú)法使用
- 檢查:Build Phases -> Compile Sources
- 項(xiàng)目里面的某個(gè)資源文件(比如plist、音頻等)無(wú)法使用
- 檢查:Build Phases -> Copy Bundle Resources
模型
- 什么是模型?
- 專(zhuān)門(mén)用來(lái)存放數(shù)據(jù)的對(duì)象
- 一般都是一些直接繼承自NSObject的純對(duì)象
- 內(nèi)部會(huì)提供一些屬性來(lái)存放數(shù)據(jù)
一個(gè)控件看不見(jiàn)有哪些可能?
- 寬度或者高度其實(shí)為0
- 位置不對(duì)(比如是個(gè)負(fù)數(shù)或者超大的數(shù),已經(jīng)超出屏幕)
- hidden == YES
- alpha <= 0.01
- 沒(méi)有設(shè)置背景色、沒(méi)有設(shè)置內(nèi)容
- 可能是文字顏色和背景色一樣
代碼添加按鈕
- (void)addButtonWithImage:(NSString *)image highImage:(NSString *)highImage disableImage:(NSString *)disableImage frame:(CGRect)frame tag:(NSInteger)tag action:(SEL)action
{
// 創(chuàng)建按鈕
UIButton *btn = [[UIButton alloc] init];
// 設(shè)置背景圖片
[btn setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
[btn setBackgroundImage:[UIImage imageNamed:disableImage] forState:UIControlStateDisabled];
// 設(shè)置位置和尺寸
btn.frame = frame;
// 監(jiān)聽(tīng)按鈕點(diǎn)擊
[btn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];
// 綁定tag標(biāo)記
btn.tag = tag;
// 添加按鈕
[self.view addSubview:btn];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self addButtonWithImage:@"add" highImage:@"add_highlighted" disableImage:@"add_disabled" frame:CGRectMake(30, 30, 50, 50) tag:10 action:@selector(add)];
}
xib文件的加載
加載xib文件
方式1
Test.xib --編譯--> Test.nib
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"Test" owner:nil options:nil];
[self.view addSubview:objs[1]];
方式2
一個(gè)UINib對(duì)象就代表一個(gè)xib文件
UINib *nib = [UINib nibWithNibName:@"Test" bundle:[NSBundle mainBundle]];
一般情況下,bundle參數(shù)傳nil,默認(rèn)就是mainBundle
UINib *nib = [UINib nibWithNibName:@"Test" bundle:nil];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
[self.view addSubview:[objs lastObject]];
第一周作業(yè)(遇到的坑)
- 導(dǎo)入txt文件后讀出來(lái)的始終是亂碼 各種蛋疼 最后發(fā)現(xiàn)是文本編碼沒(méi)弄對(duì)
- Xcode時(shí)常報(bào)錯(cuò)找不到某某key,其實(shí)就是刪除了該控件從storyboard的代碼,但是忘記刪除留在storyboard上的控件連線
滿地打滾賣(mài)萌求贊,如果本文幫助到你,輕點(diǎn)下方的紅心,給作者君增加更新的動(dòng)力。