您好,登錄后才能下訂單哦!
首先是熟悉 Xcode 界面。因為這本書的 Xcode 版本并不是最新版,而我的 MacBook 上已經(jīng)裝了 Xcode 5.0,所以帶來了一些不便。Xcode 5.0 在創(chuàng)建 Single View Application 時會默認創(chuàng)建 Storyboard ,而這本書上剛開始是先用 xib 來做界面。剛開始我把 Storyboard 當做 xib 來用倒是影響不大,但是到了要連線的時候,書上說的 File's Owner 我就找不到了,而且到了后面做多界面的應(yīng)用時就一頭霧水。其他的操作問題不大,花幾天時間適應(yīng)之后就好了。不過由于從 Windows 轉(zhuǎn)到 Mac OS X 的時間并不久,我還不適應(yīng) Mac OS X 的快捷鍵操作,甚至連快捷鍵的圖標都不一定認得 ⊙﹏⊙ 。
【這不是一篇技術(shù)博客】
接下來就進入了基本交互的學習。我按照書上的方法寫了一個這樣的應(yīng)用程序:
1.關(guān)閉鍵盤的方式
首先是兩個 Text Field 和兩個 Label 。這個并沒有多少技術(shù)含量,Label 雙擊即可改文字,而 Text Field 里灰色的文字則是在 Attributes inspector 里的 Placeholder 中更改。同時"Number:"對應(yīng)的 Text Field 的 Keyboard 改為 Number Pad 。 Bulid 之后點擊 Text Field 當然會彈出鍵盤,而下面我要實現(xiàn)的是點擊鍵盤右下角的 Done 關(guān)閉鍵盤,以及點擊 Text Field 以外的位置關(guān)閉鍵盤。
首先在ViewController.h里加入:
- (IBAction) textFieldDoneEditing:(id)sender; - (IBAction) backgroundTap:(id)sender;
然后在ViewController.m里寫這兩個方法的實現(xiàn):
- (IBAction) textFieldDoneEditing:(id)sender { [sender resignFirstResponder]; } - (IBAction) backgroundTap:(id)sender { [_nameField resignFirstResponder]; [_numberField resignFirstResponder]; }
添加完代碼之后還要打開 Connection inspector ,把 Did End On Exit 連到 File's Owner 上。
2.數(shù)值調(diào)節(jié)
接下來是中間那個 Label 和 Slider 。這兩個控件是用來實現(xiàn)將 Slider 的 Attributes inspector 中,Maximum 改為100,Minimum 最小改為0,Current 改為50。接下來是創(chuàng)建輸入輸出口。打開 Assistant editor ,按住 control 將 Slider 連線至 ViewController.h 的 @interface 與 @end 間的空白處,彈出窗口后類型選擇 Action ,命名為 sliderChanged 。用同樣的方法操作 Label ,但是直接使用默認設(shè)置 IBOutlet ,命名為 sliderLabel 。在 ViewController.m 中的相應(yīng)位置加入如下代碼:
-(IBAction)sliderChanged:(id)sender{ UISlider *slider =(UISlider *)sender; int progressAsInt = (int)roundf(slider.value); _sliderLabel.text = [NSString stringWithFormat:@"%d", progressAsInt]; }
其實在這里我發(fā)現(xiàn)(并體驗)了一個 Objective-C 的特性。凡是在 @interface 里 @property 過的對象,可以使用_+對象名或者self.+對象名在各個方法的實現(xiàn)中調(diào)用。而@synthesize可以任意更改名字以便調(diào)用,但是在這本書里比較少用。如:
@synthesize a=_a;
3.簡易的分欄
接下來是下面的 Segmented Control 。同時添加兩個 Switch 和一個 Button 。把 Segmented Control 的兩欄分別改成"Switches"和“Button”,Button 名改為“Do Something”。在 Segmented Control 上現(xiàn)在需要實現(xiàn)的是:點擊“Switches”時顯示兩個 Switch 并隱藏 Button,點擊“Button”時顯示 Button 并隱藏兩個 Switch。先在 ViewController.h 中創(chuàng)建 Segmented Control 的 Action,命名為“toggleControls”。然后在 ViewController.m 的相應(yīng)位置加入如下代碼:
- (IBAction)toggleControls:(id)sender { if([sender selectedSegmentIndex] == 0){ _leftSwitches.hidden = NO; _rightSwitches.hidden = NO; _doSomethingButton.hidden = YES; } else{ _leftSwitches.hidden = YES; _rightSwitches.hidden = YES; _doSomethingButton.hidden = NO; } }
4.開關(guān)聯(lián)動
接下來要實現(xiàn)的是兩個 Switch 的“聯(lián)動”,即同時開同時關(guān)。分別選中兩個 Switch,在 ViewController.h 中創(chuàng)建兩個輸出口(IBOutlet),分別命名為“l(fā)eftSwitches”和“rightSwitches”。左邊的開關(guān)用拖動的方式再添加一個名為“switchChanged:”的方法。在 ViewController.m 中添加如下內(nèi)容:
- (IBAction)switchChanged:(id)sender { UISwitch *whichSwitch = (UISwitch *)sender; BOOL setting = whichSwitch.isOn; [_leftSwitches setOn:setting animated:YES]; [_rightSwitches setOn:setting animated:YES]; }
5.操作表和警報
這兩個東西其實應(yīng)該叫“Action Sheet”和“Alert View”會顯得不那么陌生。我們就以上面已經(jīng)創(chuàng)建的名為“Do Something”的 Button 為 Action Sheet 的觸發(fā)按鈕。在 ViewController.h 中創(chuàng)建一個此 Button 的 Action 方法,命名為“buttonPressed”。該方法的實現(xiàn)如下:
- (IBAction)buttonPressed:(id)sender { UIActionSheet *myActionSheet=[[UIActionSheet alloc]initWithTitle:@"標題" delegate:self cancelButtonTitle:@"取消鍵" destructiveButtonTitle:@"毀滅鍵" otherButtonTitles:@"額外加鍵", nil]; [myActionSheet showInView:self.view]; }
上面這段代碼中的藍色字可以任意更改成你喜歡的文字。效果如下:
接下來我們把“毀滅鍵”作為 Alert View 的觸發(fā)按鈕。只需要在 ViewController.m 中加入如下代碼即可:
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex==[actionSheet destructiveButtonIndex]){ UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"AlertView的標題" message:@"我是一個AlertView" delegate:self cancelButtonTitle:@"取消鍵" otherButtonTitles:@"隨手加", nil]; [myAlertView show]; } }
效果如下:
當然你也可以自己做一做別的按鈕的觸發(fā)效果來玩。
【這不是一篇技術(shù)博客】
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。