国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

從零開始學ios開發(三):第一個有交互的app

2019-11-14 20:23:20
字體:
來源:轉載
供稿:網友

感謝大家的關注,也給我一份動力,讓我繼續前進。有了自己的家庭有了孩子,過著上有老下有小的生活,能夠擠出點時間學習真的很難,每天弄好孩子睡覺已經是晚上10點左右了,然后再弄自己的事情,一轉眼很快就到12點了,就要去睡了,現在身體湯不牢啊,如果不早點睡,第二天上班肯定沒精神,要靠紅牛了,呵呵,在這樣的情況下再擠出時間學習ios真的很困難,只能是見縫插針,抓緊一切可用的時間學習,時間,擠一擠總歸是有的,只是多少問題。

這幾天看來書的第三章,主要講了如何添加按鈕,然后為按鈕添加響應事件,當點擊按鈕后,觸發按鈕的響應事件,從而改變一個Label上的顯示文字。如果這個放在VS里面,真的是小菜一疊,但是在ios里面,差別很大,很多東西第一次接觸會很混淆,下面就一點點介紹如何創建第一個有交互的app吧。

1)創建一個新的PRoject,選擇“Single View application”,命名為“Button Fun”,然后保存。

這里簡單的解釋一下什么是“Automatic Reference Counting”,簡稱ARC,是ios的一種垃圾回收機制,即自動釋放不再使用的變量,釋放內存,這個和C#中的垃圾回收有點類似,但是至于他們是如何實現的,就不是很清楚了,反正記住這個是用來自動釋放變量從而騰出內存空間的就可以了,暫時這么認為吧,以后用更深入的了解,再詳細描述。

2)添加2個Button和1個Label 選中project navigate中的“BIDViewController.xib”,添加Button的方法和上一篇中添加Label的方法一樣,直接從Object Library里面拖就可以,在Object Library中找到“Round Rect Button” 拖2個到界面中,添加完后的效果如下 上圖中,將2個button分別根據輔助線放到了屏幕的左右兩邊上下劇中的位置,Label放在最上面,然后將Label拉長,拉到出現輔助線的位置。

3)添加button文字,去除Label文字 在Xcode中,改變文字的方法有3種,第一種選中button,然后在Attributes Inspector中改變Title的屬性值   第二種方法是直接用鼠標在button上雙擊,然后鍵入需要的文字即可(這個和VS里面有很大的不同,在VS中雙擊一個按鈕是添加一個單擊事件,而在Xcode中,則是改變button的文字,所以說是VS比較簡單嘛) 第三種就是用代碼改變文字。

分別將左右兩個按鈕的文字改成“Left”和“Right”,使用同樣的方法,去除Label上的文字,并且在Attributes Inspector中將Label的文字對齊方式設置為劇中,最后的界面效果如下

4)Outlet和Action(這一小節的敘述不一定完全正確,只是本人的個人理解,如果有不對的地方,望大家能夠指出,謝謝!) 這兩個概念是我學習ios開發以來遇到的第一個難點,其實說難不難,就是很搞,一開始沒有理解它的意思。

Outlet:簡單來說就是C/C++里面的指針,指向一個對象,或者說是一個對象的引用,例如一個Label,一個Button等。在C# Winform中,我們會為每一個控件設定一個name,那么在編程時,直接使用這個name就可以對該控件進行操作,但是在ios里面,情況變得有些復雜,控件沒有name,就是說你拖一個控件過來,這個控件是沒有自己的name的,那么要在code中操作這個控件該怎么辦呢?定義一個Outlet,然后把這個Outlet指向該控件,在code中就用這個Outlet來操作這個控件,好吧,稍稍有些復雜。

舉兩個Outlet的例子:

@property (weak, nonatomic) IBOutlet UILabel *statusText;

以上僅僅是一個Outlet的定義,說明這個Outlet會指向一個Label控件,但是并沒有說明指向哪一個Label。

@property (weak, nonatomic) IBOutlet UIButton *leftButton;

同樣,上面僅僅是一個Outlet的定義,說明這個Outlet會指向一個Button控件,但是并沒有說明指向哪一個Button。

Action:相對于Outlet,Action應該稍微簡單一點,它的作用就是定義一個事件,然后將控件和Action事件聯系起來就可以。Action的例子如下:

- (IBAction)buttonPressed:(id)sender;

這個和C# Winform有點類似,C#可以單獨定義事件,然后將控件和事件使用“+=”操作符聯系起來就可以,雖然ios里面沒有這個語法,但是也是需要聯系的,聯系建立起來以后,控件就可以觸發這個事件了。

希望以上對Outlet和Action的簡單說說明大家能夠看懂,其實我自己也沒有百分百搞明白,先將自己的理解寫下,以后有更深入的理解后再進行補充。

5)為Button添加事件 前面說過了,要添加事件,首先要創建一個Action,然后建立聯系,Xcode比較智能,可以幫我們把這2步一起進行。 a)選中project navigator中的BIDViewController.xib,顯示iphone的界面。 b)選中Xcode右上角的7個按鈕從左到右的第二個Show Assistant editor(快捷鍵:option+command+enter,菜單欄View>Assistant Editor>Show Assistant editor)

選中后的界面如下,會在iphone界面的右邊出現BIDViewController.h文件,我們等會就要將button拖到這個文件里,然后進行一些相應的設置,Xcode就會自動幫我們建立控件和Action之間的聯系。 接下來就是創建Action了,鼠標選中Left按鈕不放,按住鍵盤上的control鍵,然后鼠標移動到右邊的BIDViewController.h文件上,在@interface和@end中間放開鼠標

(此圖從書上截取,所以不太清楚) 會有一個框彈出來,如下

將上面的值設置成下面的內容

首先,我們是創建一個Action,所以Connection選擇Action,然后為事件命名為buttonPressed,類型為UIButton,說明是按鈕事件,最后單擊“Connect”按鈕,完成創建。創建完成后的代碼如下:(BIDViewController.h)

#import <UIKit/UIKit.h>@interface BIDViewController : UIViewController- (IBAction)buttonPressed:(id)sender;@end

在BIDViewController.m中會自動添加該事件的方法

- (IBAction)buttonPressed:(id)sender {}

為Left按鈕添加好Action后,再為Right按鈕添加同樣的事件,buttonPressed的參數sender可以區分是由哪個button觸發了該事件,所以我們不必再為Right button單獨的創建一個事件,直接將Right button關聯到buttonPressed就可以了,關聯的方法也很簡單,鼠標選中Right按鈕不放,按住鍵盤上的control鍵,然后鼠標移動到右邊的BIDViewController.h文件的buttonPressed事件上面,然后放開鼠標,關聯完成。 (此圖從書上截取,所以不太清楚)

 6)為Label添加Outlet 添加Outlet的方法和添加Action的方法一樣,只是在彈出框的參數選擇上略有區別,同樣,鼠標選中Label標簽,按住control,拖到BIDViewController.h文件中,放開鼠標后,一個彈出框彈出來 Connection保留默認值Outlet,Name中填寫“textStatus”作為Outlet的名稱,其他的選項都保留默認值即可,最后點擊“Connect”按鈕,Outlet創建完成。 創建完成后的代碼如下:(BIDViewController.h)

@property (weak, nonatomic) IBOutlet UILabel *textStatus;

在BIDViewController.m中會自動添加@synthesize,然后在viewDidUnload方法中添加對textStatus的釋放代碼。(viewDidUnload方法是系統自動創建的,當該View釋放時調用,即該View將不顯示了,其他View要顯示時,該方法會調用到。)

復制代碼
@synthesize textStatus;......- (void)viewDidUnload{    [self setTextStatus:nil];    [super viewDidUnload];    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;}
復制代碼

至此,所有的Action和Outlet都已經添加完畢,button可以觸發buttonPressed事件,textStatus指向Label,可以對Label進行操作。

7)寫Code 終于要開始寫代碼的,真心不容易啊。在BIDViewController.m的buttonPressed方法中添加以下代碼(其實也就2行而已)

- (IBAction)buttonPressed:(id)sender {    NSString *title = [sender titleForState:UIControlStateNormal];    textStatus.text = [NSString stringWithFormat:@"%@ button pressed.", title];}

第一行:titleForState指的是按鈕在某個狀態時顯示的title,UIControlStateNormal得到的是按鈕的一般狀態,即按鈕沒有被點擊,沒有獲取焦點時的狀態,那么titleForState:UIControlStateNormal獲得的是按鈕在通常狀態下的title。 第二行:將title賦值給Label用于顯示。 兩行代碼很簡單易懂,沒有什么難點。

8)編譯運行 快捷鍵command+B,編譯程序。 快捷鍵command+R,運行程序。 當然,你也可以直接點Run按鈕,直接編譯運行程序。

程序運行后的開始效果如下

點擊Left按鈕,Label顯示“Left button pressed.”,點擊Right按鈕,Label顯示“Right button pressed.”

 

至此,整個程序開發完畢!

9)感謝 整個章節學習下來,發現有很多和Visual Studio不同的地方,事件、控件引用等都有比較大的差異,有比較的學習,可能會取得更快的進步,才能學得透徹,理解的更深入。當然,這只是一個開始,下一章,要學習更多的iphone上面的控件,下章再見!

 

Button_Fun.zip 

 

P.S. 這一篇學習筆記距離上一篇間隔了蠻長的時間,一是對iphone開發的不熟悉,學起來比較慢,另一方面確實是時間有限,現在估計下來,一個禮拜的寫一篇記錄應該是一個比較理想的計劃,本人盡力爭取不拖太長的時間,努力學習,謝謝各位的捧場!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 万州区| 万全县| 石泉县| 贵南县| 濮阳市| 民和| 普兰县| 喀什市| 荆州市| 黄陵县| 山阴县| 赞皇县| 阳高县| 黄浦区| 屯昌县| 荥阳市| 铜鼓县| 宁蒗| 射洪县| 闸北区| 江达县| 吉林市| 芒康县| 赞皇县| 涿鹿县| 北川| 临安市| 梁平县| 财经| 石渠县| 桂林市| 泰宁县| 哈尔滨市| 花莲市| 南澳县| 五指山市| 都江堰市| 庆阳市| 乌拉特后旗| 吕梁市|