2012-01-04 59 views
1

我有一個Button1,它有IBAction。我設立的目標和行動對我的按鈕iPhone:IBAction vs Selector

- (void)setTarget:(id)target action:(SEL)action { 
    [self.Button1 addTarget:target action:action 
     forControlEvents:UIControlEventTouchUpInside]; 
} 

所以,當我按下按鈕,首先IBAction爲做了他應該和不如行動,我設置按鈕。那個訂單總是這樣嗎?

回答

3

如果你正在加載你從一個nib文件查看或查看控制器,那麼是的模式將永遠是IBAction甚至第一個跟着你添加到按鈕的目標。

實際上,在Interface Builder中添加IBAction實際上只是告訴IB調用["UIControl" addTarget:"id" forControlEvents:"UIControlEvent"],並且您可以將多個目標添加到UIButton

在影響您的代碼(如果您正在使用initWithNib:named:),因此這將首先調用按鈕上的addTarget功能與你在Interface Builder中指定的動作,然後在以後的某個點會從筆尖文件第一次加載的一切您上面的setTarget函數將被調用,這會將另一個目標操作添加到該按鈕。 A UIControls目標存儲在按順序訪問的數組中,並且如果控制事件符合創建順序,將觸發。 如果您在UIControl(超類UIButton)的頭文件中查看,您會看到NSMutableArray* _targetActions是一個數組。所以這個命令保證以這樣的方式開啓,除非你在這個數組創建之後重新排序。