gpt4 book ai didi

iphone - 如何访问 View Controller 的父级并正确关闭 self 和 self.parent?

转载 作者:行者123 更新时间:2023-12-01 19:11:08 24 4
gpt4 key购买 nike

MyViewController ,我要求用户从通讯录中选择一个人:(单击按钮)

peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
peoplePicker.peoplePickerDelegate = self;
[self presentViewController:peoplePicker animated:YES completion:NULL];

如果用户选择一个拥有多个电话号码的人,我将展示一个新的 UITableViewController,它允许用户选择一个电话号码:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
// ...
next = [[ChoosePersonPhoneViewController alloc] initWithStyle:UITableViewStyleGrouped personPhoneInfoArray:personPhoneInfos];
[peoplePicker pushViewController:next animated:YES];
// ...
}

当用户选择电话号码时,我想将该电话号码带回原始 ViewController 并关闭 ABPeoplePickerNavigationControllerChoosePersonPhoneViewController .

两个问题:
  • 如何从 ChoosePersonPhoneViewController 中关闭两个 View Controller ?
  • 如何访问 MyViewController来自ChoosePersonPhoneViewController ?

  • 我的猜测是:
    ABPeoplePickerNavigationController *peoplePicker = (ABPeoplePickerNavigationController *)self.navigationController;
    MyViewController *nsvc = (MyViewController *)peoplePicker.presentingViewController;

    我尝试了许多使用 parentViewController 的组合和 presentingViewControllerpopViewController/ dismissViewController ,但无法真正弄清楚 - 我不断收到异常,这表明我对 View Controller 层次结构缺乏了解。我将不胜感激一些指针或至少 RTFM 链接。

    最佳答案

    一旦你回答了第二个问题,你的第一个问题就变得容易了。在ChoosePersonPhoneViewController 中,有一个与myViewController 相同类的属性,命名为parent,当你从myViewController 分配ChoosePersonPhoneViewController 时,将其设置为self,就像你将delegate 设置为self。一旦设置了父对象,您就可以从子对象调用父对象中的方法。

    关于iphone - 如何访问 View Controller 的父级并正确关闭 self 和 self.parent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530213/

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