[英]How to make multiple UIButtons connect to the same IBAction?
我需要幾個UIButtons來連接到同一個IBAction,這樣按鈕都可以做同樣的事情而無需復制和粘貼代碼。 請告訴我是否有辦法做到這一點! 它可能在我的鼻子底下,但我找不到它。 謝謝!
只需為每個按鈕添加相同的目標和選擇器:
[button1 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[button2 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
// etc.
為此,如果您使用的是Outlet,則需要為每個按鈕設置IBOutlet用於每個按鈕或Set標簽,然后使用此代碼.h
@interface RootViewController_Phone : UIViewController
{
IBOutlet UIButton *btn1;
IBOutlet UIButton *btn2;
}
- (IBAction)buttonPressed:(id)sender;
-(void)CallButtonsMethod;
@end
現在在.m文件中
- (IBAction)buttonPressed:(id)sender{
if([sender isEqual:btn1])
{
[self CallButtonsMethod];
}
if([sender isEqual:btn2])
{
[self CallButtonsMethod];
}
}
-(void)CallButtonsMethod
{
//your Code
}
使用IBOutletCollections
。
這是教程: http : //useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html
我發現我通常無法將IB中的多個按鈕(或者甚至是單個按鈕)連接到代碼中已經存在的 IBAction,通過按住Ctrl鍵從按鈕拖動到m中的IBAction文件。 Xcode嘗試在拖動文件中創建新操作,但不會連接到現有操作。 [對於Xcode 4.6.1和之前的幾個(可能是全部)版本都是如此。]
如果IBAction位於視圖控制器中,則以下鏈接中接受的答案中的方法有效,該視圖控制器是包含按鈕的視圖的“文件所有者”:
但是,如果您希望IBAction位於視圖自己的類中,而不是視圖控制器的類中,則以下方法有效:
首先在IB中僅將一個按鈕拖到畫布上。 按住Ctrl鍵並從按鈕拖動到視圖的.m文件。
將拖動的行拖放到代碼的實現部分中的任何空白空間中。 在小彈出對話框中定義新的IBAction。 所以現在你有一個連接到IBAction的按鈕。
現在,不要從對象庫中拖動更多按鈕,而是按住Option鍵並從原始按鈕中拖出一個新按鈕 。 這個新按鈕將連接到與原始按鈕相同的IBActions。 (如果你需要創建很多很多按鈕,這看起來很乏味,你可以同時選擇一堆已經創建的按鈕,然后按住Option鍵拖動,一次創建多個按鈕。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.