最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解iOS應(yīng)用使用Storyboard布局時(shí)的IBOutlet與IBAction

 更新時(shí)間:2016年04月08日 09:26:23   作者:ForeverYoung21  
這篇文章主要介紹了iOS應(yīng)用使用Storyboard布局時(shí)的IBOutlet與IBAction,文中還附帶講解了為什么IBOutlet屬性是weak的,需要的朋友可以參考下

在圖形界面編程時(shí),解決的第一問題就是如何將靜態(tài)界面與代碼關(guān)聯(lián)起來,或者說是代碼如何與界面上的對(duì)象

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

來說明該變量將與界面上的某個(gè)UI對(duì)象對(duì)應(yīng),在方法前增加IBAction來說明該方法將與界面上的事件對(duì)應(yīng). 

下面通過一個(gè)連接網(wǎng)絡(luò)服務(wù)器(NetworkConnection)的例子來說明IBOutlet與IBAction。

界面上有host 與 port 的Text Field UI對(duì)象,一個(gè)Button對(duì)象。

所以代碼中需要定義兩個(gè)IBOutlet變量,分別用來定義host與port; 一個(gè)IBAction方法,用來發(fā)起連接動(dòng)作。

在NetworkConnectionViewController.h文件中:

定義變量:

復(fù)制代碼 代碼如下:

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

將這兩個(gè)變量說明為IBOutlet變量:
復(fù)制代碼 代碼如下:

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

 

在NetworkConnectionViewController.m文件中增加:

復(fù)制代碼 代碼如下:

@synthesize host;
@synthesize port;

打開NetworkConnectionViewController.xib文件,拖兩個(gè)Text Field對(duì)象到上面。

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

分別為兩個(gè)Text Field選擇Outlet變量。這樣做了以后,界面上的Text Field對(duì)象就與程序中定義的變量就關(guān)聯(lián)起來,

當(dāng)改變變量的屬性時(shí),就會(huì)顯現(xiàn)在界面上。

為了檢驗(yàn)變量是否與界面對(duì)象關(guān)聯(lián),在viewDidLoad方法中給變量付值然后編譯運(yùn)行。

復(fù)制代碼 代碼如下:

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

運(yùn)行后,可以在界面的Text Field中看到這些值,說明變量與界面對(duì)象關(guān)聯(lián)正確。從而就可以在界面中看到變量的值。

 

在NetworkConnectionViewController.h文件中增加一個(gè)IBAction方法:

復(fù)制代碼 代碼如下:

-(IBAction)connectNetwork;
在NetworkConnectionViewController.m文件中實(shí)現(xiàn)該方法:

-(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,拖一個(gè)Round Rect Button到上面。
然后按住Ctrl鍵,拖拽該button到File's Owner上,在彈出的IBAction列表中

選擇connectNetwork。這樣當(dāng)該button被按下彈起后就會(huì)調(diào)用connectNetwork方法。

IBOutlet與IBAction是iPhone應(yīng)用開發(fā)的基礎(chǔ),是成功邁向iPhone平臺(tái)應(yīng)用開發(fā)的第一步。

為什么IBOutlet屬性是weak的?

因?yàn)楫?dāng)我們將控件拖到Storyboard上,相當(dāng)于新創(chuàng)建了一個(gè)對(duì)象,而這個(gè)對(duì)象是加到視圖控制器的view上,view有一個(gè)subViews屬性,這個(gè)屬性是一個(gè)數(shù)組,里面是這個(gè)view的所有子view,而我們加的控件就位于這個(gè)數(shù)組中,那么說明,實(shí)際上我們的控件對(duì)象是屬于view的,也就是說view對(duì)加到它上面的控件是強(qiáng)引用。當(dāng)我們使用Outlet屬性的時(shí)候,我們是在viewController里面使用,而這個(gè)Outlet屬性是有view來進(jìn)行強(qiáng)引用的,我們?cè)趘iewController里面僅僅是對(duì)其使用,并沒有必要擁有它,所以是weak的。

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

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

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

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

一個(gè)控件可以在viewController里面觸發(fā)多個(gè)IBAction。比如有一個(gè)button控件,在viewController里面有幾個(gè)方法,那么點(diǎn)擊button,會(huì)觸發(fā)所有的這些方法。

如果我有多個(gè)控件,比如button1,button2,button3,它們也可以同時(shí)綁定一個(gè)buttonClick方法,無論點(diǎn)擊button1,button2還是button3,都會(huì)觸發(fā)這個(gè)buttonClick方法。

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

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

相關(guān)文章

  • iOS實(shí)現(xiàn)列表與網(wǎng)格兩種視圖的相互切換

    iOS實(shí)現(xiàn)列表與網(wǎng)格兩種視圖的相互切換

    相信大家應(yīng)該也都發(fā)現(xiàn)了,在現(xiàn)在很多的電商app中,都會(huì)有列表視圖和網(wǎng)格兩種視圖的相互切換。例如京東和淘寶。這樣更利于提高用戶的體驗(yàn)度,所以這篇文章小編就是大家分享下利用iOS實(shí)現(xiàn)列表與網(wǎng)格兩種視圖相互切換的方法,文中介紹的很詳細(xì),感興趣的下面來一起看看吧。
    2016-10-10
  • ios的簽名機(jī)制詳解

    ios的簽名機(jī)制詳解

    這篇文章主要介紹了ios的簽名機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用ios開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • iOS CAReplicatorLayer實(shí)現(xiàn)脈沖動(dòng)畫效果

    iOS CAReplicatorLayer實(shí)現(xiàn)脈沖動(dòng)畫效果

    這篇文章主要介紹了iOS CAReplicatorLayer實(shí)現(xiàn)脈沖動(dòng)畫效果 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 掃描二維碼控件的封裝iOS實(shí)現(xiàn)

    掃描二維碼控件的封裝iOS實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)掃描二維碼控件的封裝,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS應(yīng)用程序中通過dispatch隊(duì)列控制線程執(zhí)行的方法

    iOS應(yīng)用程序中通過dispatch隊(duì)列控制線程執(zhí)行的方法

    Grand Central Dispatch簡(jiǎn)稱(GCD)是蘋果公司開發(fā)的技術(shù),以優(yōu)化的應(yīng)用程序支持多核心處理器和其他的對(duì)稱多處理系統(tǒng)的系統(tǒng),iOS應(yīng)用程序中通過dispatch隊(duì)列控制線程執(zhí)行則是以并發(fā)來達(dá)到多核優(yōu)化的重要途徑.
    2016-05-05
  • iOS實(shí)現(xiàn)UITableView數(shù)據(jù)為空時(shí)的提示頁面

    iOS實(shí)現(xiàn)UITableView數(shù)據(jù)為空時(shí)的提示頁面

    最近工作中遇到一個(gè)需求,當(dāng)UITableView數(shù)據(jù)為空的時(shí)候,給出一個(gè)簡(jiǎn)單的提示頁面,通過從網(wǎng)上查找解決的方法,發(fā)現(xiàn)了兩種實(shí)現(xiàn)的方法,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒,下面感興趣的朋友們來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • iOS仿高德首頁推拉效果實(shí)例代碼

    iOS仿高德首頁推拉效果實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于iOS仿高德首頁推拉效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-11-11
  • IOS UIWebView獲取404、504等錯(cuò)誤問題解決方案

    IOS UIWebView獲取404、504等錯(cuò)誤問題解決方案

    這篇文章主要介紹了IOS UIWebView獲取404、504等錯(cuò)誤問題的相關(guān)資料,并對(duì)相應(yīng)的錯(cuò)誤問題提出相應(yīng)的解決方案,需要的朋友可以參考下
    2016-11-11
  • iOS將視頻錄像切成一張張縮略圖

    iOS將視頻錄像切成一張張縮略圖

    這篇文章主要為大家詳細(xì)介紹了iOS將視頻錄像切成一張張縮略圖的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • iOS App通信之local socket示例

    iOS App通信之local socket示例

    這篇文章主要介紹了iOS App之間的通信 -local socket示例的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評(píng)論

会理县| 桐城市| 定安县| 昌图县| 聂荣县| 怀宁县| 全椒县| 化州市| 丘北县| 双江| 方正县| 大邑县| 寻乌县| 平武县| 易门县| 宁城县| 桂东县| 宁明县| 眉山市| 南乐县| 罗源县| 金寨县| 阿合奇县| 临夏县| 宜君县| 汉阴县| 黄平县| 武宣县| 张家口市| 巴里| 平塘县| 扎鲁特旗| 乌兰察布市| 平舆县| 灌云县| 雅江县| 武安市| 青田县| 海淀区| 祁东县| 唐海县|