【问题标题】:Xcode: How do I remove an action from a object?Xcode:如何从对象中删除操作?
【发布时间】:2011-09-08 23:55:25
【问题描述】:

我需要从对象中删除一个动作,然后添加一个新动作。

我已使用此代码添加新操作:

[Button addTarget:self action:@selector(newAction:) forControlEvents:UIControlEventTouchUpInside];

然后我尝试使用此代码删除旧操作:

[Button removeTarget:self action:@selector(oldAction:) forControlEvents:UIControlEventTouchUpInside];

问题在于它也以某种方式删除了 newAction。

有什么想法吗?

提前致谢:)

【问题讨论】:

    标签: objective-c cocoa-touch uibutton target-action


    【解决方案1】:

    在这种情况下,一个简单的解决方案是先删除旧操作,然后再添加新操作。即反过来做。

    您也可以通过将nil 传递给目标来删除所有操作。

    【讨论】:

    • 非常感谢你 :)... 不知道为什么我没有想到这一点...感谢 nil 提示,这确实让我未来的编码变得更加简单 :)
    • 将 nil 传递给目标不会导致删除所有动作: 参数:target 目标对象——即动作消息发送到的对象。如果为 nil,则在响应者链中搜索愿意响应操作消息的对象
    【解决方案2】:

    您可以从 UIButton 中删除操作,例如:

    [self.myButton removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      相关资源
      最近更新 更多