触发按钮操作时,不会调用ABNewPersonViewController委托方法

时间:2012-03-16 16:53:03

标签: iphone ios abpersonviewcontroller

我正在使用ABNewPersonViewController。 我将完成按钮(rightBarButtonItem的{​​{1}})保存到另一个按钮,以便委托方法

ABNewPersonViewController
在按下完成按钮之前,

不会被调用。我的- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person 方法是

viewDidLoad

在按钮上单击另一个视图我触发完成按钮操作

- (void)viewDidLoad {
[super viewDidLoad];


self.defaultRightBarButtonItem = self.navigationItem.rightBarButtonItem;

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

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

编辑:发现加载新视图时不会触发委托方法。只有当国家,铃声等字段被编辑时,才会发生这种情况(加载新视图)。那是在没有触发委托方法的时候。在所有其他情况下,委托方法被触发。现在有什么建议吗?

2 个答案:

答案 0 :(得分:2)

performSelector相当于调用发送它的对象的方法。如果执行进入“按钮单击另一个视图”处理程序并执行

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

代码,但反过来它从不进入操作中定义的选择器,只有以下情况是可能的:

  • self.defaultRightBarButtonItemself.defaultRightBarButtonItem.targetnil
  • self.defaultRightBarButtonItem.actionnil

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

答案 1 :(得分:0)

我的2美分:问题代码中没有任何内容表示错误。但是为什么这样的round-about调用save方法(在save按钮的目标上执行save按钮的操作)。怎么样:

[self saveAction:nil];