具有多个参数的UIButton动作

时间:2013-01-04 09:17:20

标签: iphone objective-c ios ios6 uibutton

  

可能重复:
  Objective C: Sending arguments to a method called by a UIButton

我对uibutton行动有疑问。我想在点击按钮时发送参数。我看到了一些与标签道具一起使用的例子。并且该类是id发送者。但我不想修复它。行动发给我自己的经理。我该怎么办?

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self
                    action:@selector(goToSubViewManager:)
          forControlEvents:UIControlEventTouchUpInside];

这里是gotosubviewmng

- (void)goToSubViewManager:(ViewType*)vTipi
{


}

2 个答案:

答案 0 :(得分:1)

您应该只使用- (void)goToSubViewManager:(id)sender。或- (void)goToSubViewManager

所以这里有两种解决问题的方法。

  1. 您可以使用变量或属性。
  2.   
    - (void)yourMethod
    
        {
            //your code
            _vTipi = yourVTipi;
        }
    
      
    - (void)goToSubViewManager
    {
        //here you can use _vTipi;
    }
    
    1. 你可以为UIButton添加一个Category,添加一个id类型属性(比如@property(nonatomic)vTipi)。为UIButton创建实例变量。(你怎么做才能看到这个:http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/ )然后你就可以这样使用:
    2. - (void)goToSubViewManager:(id)sender
      {
          //you can user ((UIButton *)sender).vTipi
      }
      

答案 1 :(得分:0)

使用可以使用按钮的标记属性。然后可以通过比较分配的标记来使用该对象。

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self
                    action:@selector(goToSubViewManager:)
          forControlEvents:UIControlEventTouchUpInside];
rightButton.tag=1;
//

然后在回调中你可以将其比作

- (void)goToSubViewManager:(id)sender
{
     if(sender.tag==1){
// you can use an array of that object(if multiple), then apply your logic
}

}