簡體   English   中英

如何讓多個UIButton連接到同一個IBAction?

[英]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位於視圖控制器中,則以下鏈接中接受的答案中的方法有效,該視圖控制器是包含按鈕的視圖的“文件所有者”:

將.xib中的對象連接到現有IBAction

但是,如果您希望IBAction位於視圖自己的類中,而不是視圖控制器的類中,則以下方法有效:

  • 首先在IB中僅將一個按鈕拖到畫布上。 按住Ctrl鍵並從按鈕拖動到視圖的.m文件。

  • 將拖動的行拖放到代碼的實現部分中的任何空白空間中。 在小彈出對話框中定義新的IBAction。 所以現在你有一個連接到IBAction的按鈕。

  • 現在,不要從對象庫中拖動更多按鈕,而是按住Option鍵並從原始按鈕中拖出一個新按鈕 這個新按鈕將連接到與原始按鈕相同的IBActions。 (如果你需要創建很多很多按鈕,這看起來很乏味,你可以同時選擇一堆已經創建的按鈕,然后按住Option鍵拖動,一次創建多個按鈕。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM