ABPeoplePickerNavigationController使用后解除segue崩溃

时间:2014-02-22 01:59:41

标签: ios iphone objective-c uistoryboardsegue abpeoplepickerview

我有一个模态呈现的视图(称之为'当前视图')。它与之前的模态呈现视图有一个放松的区别。当前视图有一个连接到以下代码的按钮:

- (IBAction)inviteUser:(id)sender
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    [self presentViewController:picker animated:NO completion:nil];
}

当前视图被设置为选择器的委托,并实现以下委托方法:

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    // Do nothing
    [self dismissViewControllerAnimated:NO completion:nil];

}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
    [self dismissViewControllerAnimated:NO completion:nil];
    return NO;
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person
                                property:(ABPropertyID)property
                              identifier:(ABMultiValueIdentifier)identifier
{
    return NO;
}

到目前为止没什么了不起的。当我按下按钮时,我的联系人列表出现了。我可以选择一个联系人,然后我被发送回当前视图,没有崩溃,也没有明显的变化。

现在,当前视图有另一个按钮(后退按钮)连接到我在故事板中创建的展开segue。我这样做是通过按住Ctrl键从按钮拖动到'退出'并选择我在上一个视图中定义的展开功能:

- (IBAction)unwindToThisList:(UIStoryboardSegue*)unwindSegue
{

}

这是关键。如果我在当前视图中按下后退按钮,并且在此视图中我没有进入地址簿,它会正确展开。没问题。我可以整天在这些观点之间来回走动。但是,如果我进入地址簿并返回当前视图,则按后退按钮会导致EXEC_BAD_ACCESS。如果我通过选择联系人或按取消来离开地址簿,则没有任何区别。

我完全迷失了。请停下来。

1 个答案:

答案 0 :(得分:0)

我创建了一个测试xcode项目,导航中有两个场景, 从第一个视图推送当前视图(第二个场景)。

然后在当前视图中实现了inviteUser方法,在解除了ABPeoplePickerNavigationController后,我将segue取消了第一个视图,没有出错。请检查那里是否有其他错误,我猜。