2012-01-04 61 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是一个数组。所以这个命令保证以这样的方式开启,除非你在这个数组创建之后重新排序。