2011-04-11 65 views
1

是否可以为UIBarButtonItem注册2个动作?为UIBarButtonItem设置2个动作

具体来说,我指的是ABPersonViewController中存在的“取消”UIBarButtonItem。这个按钮有一个默认动作,我不想改变,但是我想为按下这个按钮时添加一个新动作。

任何想法如何做到这一点?

谢谢!

回答

1

我删除了我以前的答案,因为我误解了这个问题。不知道这个应用程序是否需要得到Apple b/c的批准才能确定您可以通过“合法”的方式获得取消按钮的指针,但我会假设您可以在按钮上进行操作。

当您第一次出现人物视图控制器时,您可以从targetaction属性中获取它的默认目标和动作并保存它们。然后将它们设置为自定义targetaction。当您的自定义操作被调用时,将默认操作发送到默认目标,然后执行您的自定义操作。

这是我拥有的最好主意,希望它有效!

+0

XJones,不是真的。我创建了我自己开发的CustomABPersonViewController类。您可能指的是ABNewPersonViewController,它只添加了一个新人。对于ABPersonViewController,“取消”按钮仅将视图恢复为其正常/原始形式。除了为按钮添加2个动作之外,我没有看到任何其他解决方案。我曾尝试将一个动作附加到按钮上,但这会忽略默认动作。 – Andrei 2011-04-11 16:59:57

+0

对不起,我误解了。我修改了我的答案,希望它有帮助。 – XJones 2011-04-11 17:55:24

0

假设您可以获得对按钮的引用,您应该可以调用addTarget:action:forControlEvents:添加另一个操作。

我意外地发现,当我根据UI的状态(我认为)替换按钮上的操作时,您可以将它做到UIButton,但我实际上是在向按钮添加操作。这是当我了解到removeTarget:action:forControlEvents:。 :-)

就这么说,如果你有一个按钮说“取消”,并且你用超出用户可见范围的东西来重载它,这可能会让用户感到困惑。如果你只是想在用户点击取消时在后台发生某些事情,那么这是一个有趣的方式来完成它!我喜欢。

+0

感谢Mark的回应。但是,没有addTarget:action:forControlEvents:用于UIBarButtonItem。 – Andrei 2011-04-11 17:28:31

+0

确实。但是有个别的'setTarget:'和'setAction:'方法。这让我怀疑'UIBarButtonItems'是否支持像'UIButton'这样的多种动作......试一试,让我们知道。 – 2011-04-11 17:31:24

+0

已经尝试过标记。 UIBarButtonItems仅支持1个目标和操作。如果您“设置”了操作,它将覆盖之前的任何内容(例如,来自ABPersonViewController的默认操作)。我认为可能有一种方法可以与观察员一起解决这个问题,但目前为止我没有任何运气。 – Andrei 2011-04-11 17:35:20