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

首頁 > 系統 > iOS > 正文

詳解iOS應用使用Storyboard布局時的IBOutlet與IBAction

2020-07-26 03:23:13
字體:
來源:轉載
供稿:網友

在圖形界面編程時,解決的第一問題就是如何將靜態界面與代碼關聯起來,或者說是代碼如何與界面上的對象

通信, 代碼如何操作界面上的對象。在iPhone平臺上,引入了IBOutlet與IBAction。通過在變量前增加IBOutlet

來說明該變量將與界面上的某個UI對象對應,在方法前增加IBAction來說明該方法將與界面上的事件對應. 

下面通過一個連接網絡服務器(NetworkConnection)的例子來說明IBOutlet與IBAction。

界面上有host 與 port 的Text Field UI對象,一個Button對象。

所以代碼中需要定義兩個IBOutlet變量,分別用來定義host與port; 一個IBAction方法,用來發起連接動作。

在NetworkConnectionViewController.h文件中:

定義變量:

復制代碼 代碼如下:

@interface NetworkConnectionViewController : UIViewController {
    UITextField *host;
    UITextField *port;
}

將這兩個變量說明為IBOutlet變量:
復制代碼 代碼如下:

@property(nonatomic, retain) IBOutlet UITextField *host;
@property(nonatomic, retain) IBOutlet UITextField *port;

 

在NetworkConnectionViewController.m文件中增加:

復制代碼 代碼如下:

@synthesize host;
@synthesize port;

打開NetworkConnectionViewController.xib文件,拖兩個Text Field對象到上面。

按住Ctrl鍵,拖拽File's Owner到Text Field之上,會彈出Outlets選擇列表,在列表中可以看到host與port。

分別為兩個Text Field選擇Outlet變量。這樣做了以后,界面上的Text Field對象就與程序中定義的變量就關聯起來,

當改變變量的屬性時,就會顯現在界面上。

為了檢驗變量是否與界面對象關聯,在viewDidLoad方法中給變量付值然后編譯運行。

復制代碼 代碼如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    host.text = @"192.168.1.100";
    port.text = @"8080";
}

運行后,可以在界面的Text Field中看到這些值,說明變量與界面對象關聯正確。從而就可以在界面中看到變量的值。

 

在NetworkConnectionViewController.h文件中增加一個IBAction方法:

復制代碼 代碼如下:

-(IBAction)connectNetwork;
在NetworkConnectionViewController.m文件中實現該方法:

-(IBAction)connectNetwork

   UIAlertView *alter = [[UIAlertView alloc] initWithTitle: @"Connection Network" message: @"sending command to the server" delegate: self cancelButtonTitle: @"OK" otherButtonTitles: nil];
   
    [alter show];
    [alter release];
//connect network
//............


打開NetworkConnectionViewController.xib,拖一個Round Rect Button到上面。
然后按住Ctrl鍵,拖拽該button到File's Owner上,在彈出的IBAction列表中

選擇connectNetwork。這樣當該button被按下彈起后就會調用connectNetwork方法。

IBOutlet與IBAction是iPhone應用開發的基礎,是成功邁向iPhone平臺應用開發的第一步。

為什么IBOutlet屬性是weak的?

因為當我們將控件拖到Storyboard上,相當于新創建了一個對象,而這個對象是加到視圖控制器的view上,view有一個subViews屬性,這個屬性是一個數組,里面是這個view的所有子view,而我們加的控件就位于這個數組中,那么說明,實際上我們的控件對象是屬于view的,也就是說view對加到它上面的控件是強引用。當我們使用Outlet屬性的時候,我們是在viewController里面使用,而這個Outlet屬性是有view來進行強引用的,我們在viewController里面僅僅是對其使用,并沒有必要擁有它,所以是weak的。

如果將weak改為strong,也是沒有問題的,并不會造成強引用循環。當viewController的指針指向其他對象或者為nil,這個viewController銷毀,那么對控件就少了一個強引用指針。然后它的view也隨之銷毀,那么subViews也不存在了,那么控件就又少了一個強引用指針,如果沒有其他強引用,那么這個控件也會隨之銷毀。

不過,既然沒有必將Outlet屬性設置為strong,那么用weak就好了: ]

一個控件可以在viewController里面有多個Outlet屬性,就相當于一個對象,可以有多個指針指向它(多個引用)。

但是一個Outlet屬性只能對應一個控件,也就是說,如果有button1和button2,button1在viewController里面有一個名為button的Outlet屬性,此時button指向button1,但是如果用button2給button重新賦值,那么此時button指向button2。也就是說,后來的覆蓋原來的。

一個控件可以在viewController里面觸發多個IBAction。比如有一個button控件,在viewController里面有幾個方法,那么點擊button,會觸發所有的這些方法。

如果我有多個控件,比如button1,button2,button3,它們也可以同時綁定一個buttonClick方法,無論點擊button1,button2還是button3,都會觸發這個buttonClick方法。

上面說了,button1,button2,button3有可能都觸發buttonClick方法,如果想在buttonClick方法里面區分到底是哪個button觸發的可能有好幾種做法。

可以給這三個button各設置一個Outlet屬性,然后在buttonClick里面判斷sender和哪個Outlet屬性是同一對象,這樣就可以區分了。但是很明顯,這樣并不合理,因為創建的三個屬性有些浪費。
我們可以給三個button各加一個tag,在buttonClick里面通過switch(或者if...)判斷,sender的tag和給各個button加上的tag是否一致,如果一致則為同一對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品三级视频福利| 国产精品亚洲自拍| 欧美激情一区二区三区在线视频观看| 国产精品永久免费观看| 欧美成人一区在线| 久久久久久久一| 国产精品va在线播放| **欧美日韩vr在线| 91精品国产自产91精品| 日本三级久久久| 国产成人在线亚洲欧美| 国产欧美日韩精品在线观看| 久久久久久久久久久免费| 在线看欧美日韩| 2019亚洲男人天堂| 91欧美激情另类亚洲| 欧美激情一二三| 亚洲福利小视频| 一区二区三区亚洲| 日韩亚洲欧美中文在线| 亚洲一区二区中文| 日韩美女视频免费在线观看| 欧美激情欧美激情在线五月| 国产精品极品尤物在线观看| 国产欧美精品一区二区| 日韩中文字幕国产精品| 国内精品伊人久久| 亚洲free性xxxx护士白浆| 91免费综合在线| 久久久久久国产精品久久| 国产精品a久久久久久| 91精品国产免费久久久久久| 国产精品青青在线观看爽香蕉| 国产大片精品免费永久看nba| 日韩av电影免费观看高清| 操日韩av在线电影| 久久伊人色综合| 国产v综合ⅴ日韩v欧美大片| 精品国内亚洲在观看18黄| 亚洲精品视频中文字幕| 疯狂蹂躏欧美一区二区精品| 热99精品只有里视频精品| 综合国产在线视频| 91精品久久久久久久久久另类| 国内精品模特av私拍在线观看| 色综合久综合久久综合久鬼88| 欧美小视频在线观看| 中文字幕欧美视频在线| 欧美激情小视频| 亚洲free性xxxx护士hd| 欧美性jizz18性欧美| 国产欧美日韩最新| 久久久免费在线观看| 日韩精品在线免费观看视频| 日韩亚洲综合在线| 亚洲国语精品自产拍在线观看| 91精品久久久久久久久青青| 欧美精品生活片| 久久亚洲国产成人| 久久精品一本久久99精品| 亚洲国产97在线精品一区| 国产精品视频资源| 亚洲黄色有码视频| 午夜精品久久久久久久99黑人| 亚洲免费视频观看| 欧美大成色www永久网站婷| 2021久久精品国产99国产精品| 97色在线观看免费视频| 在线亚洲欧美视频| 精品亚洲男同gayvideo网站| 亚洲人成电影在线观看天堂色| 国产日韩欧美一二三区| 日韩一区av在线| 亚洲成人免费在线视频| 国产亚洲视频中文字幕视频| 国产一区二区三区直播精品电影| 精品国产91久久久| 久久偷看各类女兵18女厕嘘嘘| 日韩免费在线免费观看| 欧美性xxxxx极品娇小| 亚洲国产高清福利视频| 亚洲成人激情在线观看| 国产亚洲精品久久久久久牛牛| 91精品免费久久久久久久久| 成人激情视频免费在线| 国产一区二区三区视频在线观看| 国产午夜精品美女视频明星a级| 精品国产一区二区三区久久久| 亚洲色图25p| 成人激情视频网| 国产成人亚洲综合| 欧美日韩亚洲精品内裤| 亚洲国产又黄又爽女人高潮的| 久久久亚洲欧洲日产国码aⅴ| www.国产一区| 欧美精品videosex性欧美| 欧美大片大片在线播放| 亚洲有声小说3d| 国产日韩精品在线观看| 国产精品视频网站| 亚洲激情视频网| 国产成人av在线播放| 亚洲第一综合天堂另类专| 日韩中文娱乐网| 美日韩精品免费视频| 精品久久久视频| 亚洲精品国产精品乱码不99按摩| 高跟丝袜欧美一区| 日韩激情视频在线| 高清欧美性猛交xxxx| 亚洲午夜精品视频| 久热在线中文字幕色999舞| 亚洲www在线观看| 欧美激情在线观看| xxav国产精品美女主播| 国产色综合天天综合网| 黄色一区二区在线| 日本精品va在线观看| 91亚洲精华国产精华| 亚洲国产成人精品一区二区| 欧美精品在线网站| 亚洲午夜性刺激影院| 国产精品自产拍高潮在线观看| 久久久免费在线观看| 久久精品一本久久99精品| 国产99视频在线观看| 国产欧美日韩免费看aⅴ视频| 国产精品1区2区在线观看| 色久欧美在线视频观看| 精品美女国产在线| 日韩中文字幕免费看| 青草青草久热精品视频在线观看| 日韩经典中文字幕| 国产在线a不卡| 国产精品69精品一区二区三区| 欧美视频在线免费看| 亚洲亚裔videos黑人hd| 日本高清久久天堂| 最近2019年好看中文字幕视频| 久久在精品线影院精品国产| 欧美精品一区二区三区国产精品| 欧美成人午夜影院| 国产精品v日韩精品| 91色在线观看| 亚洲香蕉成人av网站在线观看| 亚洲视频自拍偷拍| 亚洲成人国产精品| 国产精品久久一区| 九九久久久久久久久激情| 成人黄色av网站| 亚洲韩国欧洲国产日产av| 韩国19禁主播vip福利视频| 亚洲91av视频| 亚洲成av人片在线观看香蕉| 日韩欧美高清视频| 国产综合久久久久久| 欧美亚洲日本网站| 孩xxxx性bbbb欧美| 日韩av电影在线免费播放| 日韩网站免费观看高清| 91日本在线视频| 国产精品日日摸夜夜添夜夜av| 91福利视频在线观看| 91欧美视频网站|