(GeekBand)iOS編程第一周

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)力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容