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

标签 iphone ios uiviewcontroller

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/

    相关文章:

    ios - 从详细信息转入后更新 TableView 数据

    iphone - 在 iOS 上,当 ViewController 的 View 设置为我的 UIView 子类时,为什么不存在这样的属性?

    ios - 无法在 iOS 沙箱中的文档文件夹中创建文件或目录

    ios - 删除并重新安装 iOS 应用程序后保留的文档目录

    ios - 从 iOS App 中的音频文件中分离语音和音乐(制作卡拉 OK)

    iphone - ScrollView 中的 UIScrollView - 未显示 ScrollBars

    iphone - iOS 绘制 GridView 以拖放捕捉到该网格的对象

    ios - 如何将自定义数据添加到标记(Google Maps API SWIFT)

    ios - 如何在 View Controller 之间传递变量引用?

    ios - 方法 Swizzling 未正确触发?