我有一个模态呈现的视图(称之为“当前视图”)。它对前面的模态呈现的视图有一个展开的转义。当前视图有一个连接到以下代码的按钮:
- (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;
}
到目前为止没有什么疯狂的。当我按下按钮时,我的联系人列表就会出现。我可以选择一个联系人,然后我会返回当前视图,没有崩溃,也没有明显的变化。
现在,当前视图有另一个按钮(后退按钮)连接到我在情节提要中创建的展开转场。我通过 ctrl 从按钮拖动到“退出”并选择我在前一个视图中定义的展开函数来做到这一点:
- (IBAction)unwindToThisList:(UIStoryboardSegue*)unwindSegue
{
}
这是关键。如果我在当前视图中按下后退按钮,并且在此视图中我没有进入地址簿,它会正确展开。没问题。我可以整天在这些视图之间来回穿梭。但是,如果我进入通讯簿并返回到当前视图,按后退按钮会导致 EXEC_BAD_ACCESS。如果我通过选择联系人或按取消离开通讯录,这没有任何区别。
我完全迷路了。请停下来。