-1

可能重复:
目标 C:向 UIButton 调用的方法发送参数

我的行动有问题uibutton。我想在单击按钮时发送参数。我看到了一些使用标签道具的例子。并且类是 id sender。但我不想修复它。行动交给我自己的经理。我能怎么做 ?

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

这是 gotosubviewmng

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


}
4

2 回答 2

1

你应该只使用- (void)goToSubViewManager:(id)sender. 或者- (void)goToSubViewManager

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

  1. 您可以使用变量或属性。
- (void)yourMethod

    {
        //your code
        _vTipi = yourVTipi;
    }
- (void)goToSubViewManager
{
    //here you can use _vTipi;
}
  1. 您可以为 UIButton 添加一个类别,以添加一个 id 类型属性(例如 @property(nonatomic) vTipi)。为 UIButton 伪造实例变量。(如何做你可以看看这个: http: //oleb.net/ blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/)然后你可以像这样使用:
- (void)goToSubViewManager:(id)sender
{
    //you can user ((UIButton *)sender).vTipi
}
于 2013-01-04T10:23:04.810 回答
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
}

}
于 2013-01-04T09:37:40.823 回答