国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - IOS - 詳解iOS應用使用Storyboard布局時的IBOutlet與IBAction

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

2021-01-15 15:31ForeverYoung21 IOS

這篇文章主要介紹了iOS應用使用Storyboard布局時的IBOutlet與IBAction,文中還附帶講解了為什么IBOutlet屬性是weak的,需要的朋友可以參考下

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

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

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

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

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

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

在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對象就與程序中定義的變量就關(guān)聯(lián)起來,

當改變變量的屬性時,就會顯現(xiàn)在界面上。

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

復制代碼 代碼如下:

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


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

 

 

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

復制代碼 代碼如下:


-(IBAction)connectNetwork;
在NetworkConnectionViewController.m文件中實現(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,拖一個Round Rect Button到上面。
然后按住Ctrl鍵,拖拽該button到File's Owner上,在彈出的IBAction列表中

 

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

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

為什么IBOutlet屬性是weak的?

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

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

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

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

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

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕1区2区3区 亚洲欧美日韩精品久久亚洲区 | 久久小视频| 欧美国产日韩视频 | 亚洲精品一区二区三区四区高清 | 亚洲视频在线播放免费 | 欧美 日韩 国产 一区 | 亚洲综合自拍 | 日韩视频在线观看 | 国产一区网站 | 欧美成人性生活 | 午夜视频在线免费观看 | 午夜视频网 | 成年人在线观看视频 | 激情视频网站 | 精品国产乱码久久久久久1区2区 | 超碰在线看 | 99精品欧美一区二区三区 | 日韩在线视频一区 | 久久久天堂国产精品女人 | 中文字幕av一区 | 久久99精品久久久久久园产越南 | 精品国产乱码久久久久久88av | 国产成人免费视频网站高清观看视频 | 欧美精品一区二区三区四区在线 | 欧美成人一区二免费视频软件 | 91嫩草国产露脸精品国产 | 亚州av | 久久久久久国产精品高清 | 一区二区三区免费在线 | 91视频免费 | 男女啪啪无遮挡 | 在线观看一区 | 国内精品一区二区三区 | 欧美一区二区在线观看 | 最新免费av网站 | 久久久久久亚洲一区二区三区蜜臀 | 日本三级网 | 国产噜噜噜噜噜久久久久久久久 | www.av欧美| 成人午夜影院 | 无毛网站 |