目標 - 打招呼應用
應用界面:
應用界面
界面與代碼分離
- 可以只用代碼來描繪界面及響應用戶操作
- 但是
- 不直觀
- 調整麻煩
- iOS的解決方案:
- 用Interface Builder 畫界面
- 保存到xib(xml版的nib)文件
- 用代碼更新界面、響應用戶操作
- 保存在.m文件里
ib
: Interface Builder,90年代初由NeXT創作
帶來的兩個小麻煩
界面操作怎么指定響應代碼?
代碼怎么引用界面元素?
解決方案 - Outlet
-
為了讓代碼能引用nib中的對象
- 需要代碼里有一個變量來引用界面對象
- 在界面對象創建后,給這個變量賦值
- 這個過程最好能自動完成
-
Outlet
- IBOutlet 標記的變量
Connection
Nib Object 通過 Connection 與Outlet(Referencing outlet)建立聯系
Outlet Connection 建立的過程
Outlet Connection
Action Connection
- 界面事件
- Interface Builder, Connection Inspector
- 響應代碼
- IBAction 標記的方法
- 關聯:界面對象.事件 => 類實例.方法
IBAction
eventType: 響應的事件類型
touchUpInside: 事件類型,(手指)按下后在當前view響應范圍內抬起
touchUpOutside: 事件類型,(手指)按下后在當前view響應范圍外抬起
selector: target的事件響應方法
IBAction告訴編譯器方法為IBAction對象,具體返回類型實際上相當于void
在Xcode中關聯界面元素與代碼
- 打開Assistant Editor
- 確保兩邊打開的文件正確
- 使用鼠標右鍵或按住control鍵從界面元素拖向代碼中相應位置
- 或在Interface Builder的Connection Inspector中從響應事件的小圓點拖向代碼中相應位置
- 或從代碼左側(需手寫代碼)的小圓點拖向對應組件
組件一般使用weak
空心小圓圈說明沒有正確關聯
注意要刪除多余的connection
UIbutton 樣式
UIbutton 樣式
代碼創建 UIButton
//創建
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
//定制
[button setBackgroundImage:[UIImage imageNamed:@"okbtn"] forState:UIControlStateNormal];
[button setTitle:@"OK" forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
//添加響應
[button addTarget:self action:@selector(greeting:) forControlEvents:UIControlEventTouchUpInside];
// - event mask: UIControlEventTouchUpInside | UIControlEventTouchUpOutside