gpt4 book ai didi

iphone - 触发按钮操作时不会调用 ABNewPersonViewController 委托(delegate)方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:53 24 4
gpt4 key购买 nike

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

- (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];
}

在另一个 View 中点击按钮我触发完成按钮 Action

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

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

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

最佳答案

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

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

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

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com