OGeek|极客世界-中国程序员成长平台

标题: iphone - 触发按钮操作时未调用 ABNewPersonViewController 委托(delegate)方法 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 22:08
标题: iphone - 触发按钮操作时未调用 ABNewPersonViewController 委托(delegate)方法

我正在使用 ABNewPersonViewController。 我将完成按钮(ABNewPersonViewControllerrightBarButtonItem)保存到另一个按钮,以便委托(delegate)方法

- (void)newPersonViewControllerABNewPersonViewController *)newPersonViewController didCompleteWithNewPersonABRecordRef)person 

在按下完成按钮之前不会被调用。我的 viewDidLoad 方法是

- (void)viewDidLoad {
[super viewDidLoad];


self.defaultRightBarButtonItem = self.navigationItem.rightBarButtonItem;

UIBarButtonItem *saveBtn = [[UIBarButtonItem alloc] 
                            initWithBarButtonSystemItem:UIBarButtonSystemItemSave 
                            target:self 
                            actionselector(actionSave];
self.navigationItem.rightBarButtonItem = saveBtn;
[saveBtn release];
}

在另一个 View 中单击按钮我触发完成按钮操作

[self.defaultRightBarButtonItem.target 
 performSelector:self.defaultRightBarButtonItem.action
 withObject:self.defaultRightBarButtonItem.target];

有时该方法被调用,有时不起作用。 如果我只是编辑联系人的电子邮件地址字段或电话号码字段并尝试保存,则会调用该方法。但是,如果我尝试编辑地址字段然后保存,则不会调用该方法。这可能是什么原因。

编辑:发现加载新 View 时不会触发委托(delegate)方法。只有在编辑 Country、Ringtone 等字段时才会发生这种情况(加载新 View )。那是没有触发委托(delegate)方法的时候。在所有其他情况下,委托(delegate)方法都会被触发。现在有什么建议吗?



Best Answer-推荐答案


performSelector 等价于调用要发送到的对象的方法。如果执行进入“按钮单击另一个 View ”处理程序并执行

[self.defaultRightBarButtonItem.target 
 performSelector:self.defaultRightBarButtonItem.action
 withObject:self.defaultRightBarButtonItem.target];

代码,但反过来它永远不会进入实际定义的选择器,只有以下情况是可能的:

尝试直接调用 actionSave: 方法而不是 performSelector 并记录上面的所有字段。

关于iphone - 触发按钮操作时未调用 ABNewPersonViewController 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741339/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4