亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

從零開始學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開發的不熟悉,學起來比較慢,另一方面確實是時間有限,現在估計下來,一個禮拜的寫一篇記錄應該是一個比較理想的計劃,本人盡力爭取不拖太長的時間,努力學習,謝謝各位的捧場!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品激情自拍| 中文字幕久精品免费视频| 国产999在线| 成人免费黄色网| 中文字幕欧美国内| 欧美成人免费一级人片100| 欧美日韩国产精品一区| 久久精品国产欧美亚洲人人爽| 疯狂做受xxxx欧美肥白少妇| 川上优av一区二区线观看| 日韩成人激情影院| 一本大道久久加勒比香蕉| 亚洲欧美精品伊人久久| 5278欧美一区二区三区| 日韩一区二区在线视频| 日韩中文字幕免费看| 久久激情五月丁香伊人| 国产性色av一区二区| 色哟哟亚洲精品一区二区| 国产精品美乳一区二区免费| 97超碰蝌蚪网人人做人人爽| 国产一区二区精品丝袜| 大伊人狠狠躁夜夜躁av一区| 午夜精品久久久久久久白皮肤| 中文字幕亚洲情99在线| 国产精品免费看久久久香蕉| 国产精品99一区| 狠狠躁夜夜躁久久躁别揉| 午夜精品久久久久久久99黑人| 亚洲女人被黑人巨大进入al| 国产成人久久久精品一区| 日韩福利伦理影院免费| 91黄色8090| 欧美一级片在线播放| 亚洲综合中文字幕68页| 国产主播精品在线| 亚洲乱码国产乱码精品精| 日韩美女中文字幕| 欧美精品一区二区三区国产精品| 青青精品视频播放| 亚洲黄色片网站| 欧美自拍视频在线观看| 国自在线精品视频| 久久久在线免费观看| 国产精品专区h在线观看| 亚洲精品久久在线| 日本人成精品视频在线| 欧美一级电影久久| 成人福利在线观看| 日韩免费看的电影电视剧大全| 亚洲男女性事视频| 国产一区二区三区高清在线观看| 久久人人爽国产| 欧美日本啪啪无遮挡网站| 日韩电影中文 亚洲精品乱码| 日韩成人在线视频观看| 成人欧美一区二区三区在线湿哒哒| 日本精品在线视频| 国产精品99久久久久久白浆小说| 欧美性生交xxxxx久久久| 91精品国产91久久久久| 亚洲女人天堂色在线7777| 色中色综合影院手机版在线观看| 韩国国内大量揄拍精品视频| 日韩美女免费观看| 亚洲精品电影在线观看| 日韩精品有码在线观看| 91精品91久久久久久| 中文字幕精品视频| 欧美电影在线观看高清| 日韩精品免费综合视频在线播放| 疯狂蹂躏欧美一区二区精品| 成人免费网站在线看| 欧洲亚洲免费在线| 欧美极品少妇xxxxⅹ免费视频| 性欧美视频videos6一9| 欧美多人爱爱视频网站| 亚洲最大成人网色| 91理论片午午论夜理片久久| 97在线视频观看| 国产精品白嫩初高中害羞小美女| 精品成人av一区| 日本午夜精品理论片a级appf发布| 久久精品99久久香蕉国产色戒| 亚洲天天在线日亚洲洲精| 欧美激情在线观看| 国产不卡一区二区在线播放| 亚洲品质视频自拍网| 欧美性猛交xxxx| 91精品国产91久久久| 国产精品www网站| 亚洲国产私拍精品国模在线观看| 97精品国产aⅴ7777| 日本乱人伦a精品| 中文字幕久久亚洲| 午夜精品一区二区三区在线视频| 日韩在线观看成人| 日韩精品极品在线观看播放免费视频| 性视频1819p久久| 97av在线播放| 国产欧美精品va在线观看| 国产亚洲精品久久久久久牛牛| 国外成人性视频| 亚洲国产精品久久久久秋霞不卡| 成人免费网站在线| 国产精品视频公开费视频| 久久久久久久久91| 亚洲天堂网站在线观看视频| 日本在线观看天堂男亚洲| 国产精品久久久久7777婷婷| 中文欧美日本在线资源| 欧美精品午夜视频| 中文字幕在线观看日韩| 日韩久久免费视频| 亚洲精品视频免费| 一区二区三区视频在线| 久久亚洲综合国产精品99麻豆精品福利| 亚洲欧美视频在线| 国产精品va在线播放| 91网在线免费观看| 亚洲性夜色噜噜噜7777| 国产精品一区电影| 国产精品第一第二| 日韩av手机在线看| 久久国产加勒比精品无码| 亚洲精品mp4| 亚洲免费视频一区二区| 欧美电影第一页| wwwwwwww亚洲| 国产欧美日韩视频| 欧美亚洲国产日韩2020| 国产精品小说在线| 日韩暖暖在线视频| 韩国欧美亚洲国产| 亚洲第一中文字幕在线观看| 777国产偷窥盗摄精品视频| 日韩欧美在线网址| 国产亚洲精品美女久久久久| 亚洲男人第一网站| 日本精品va在线观看| 国产在线拍揄自揄视频不卡99| 久久精品亚洲热| 成人久久18免费网站图片| 亚州成人av在线| 亚洲成人免费网站| 亚洲free性xxxx护士白浆| 日本国产精品视频| 日韩精品在线第一页| 日韩电影在线观看中文字幕| 精品久久国产精品| 亚洲国产毛片完整版| 欧美亚州一区二区三区| 国产综合色香蕉精品| 日韩hd视频在线观看| 欧美插天视频在线播放| 亚洲欧美另类中文字幕| 欧美成人午夜剧场免费观看| 在线精品视频视频中文字幕| 亚洲日本成人女熟在线观看| 成人黄色av免费在线观看| 91av视频在线| 国产欧美一区二区三区久久人妖| 日本精品久久电影| 国产午夜一区二区|