ios10 prepareForSegue popoverPresentationController ObjC

时间:2016-10-17 19:36:37

标签: objective-c popover ios10 uistoryboardsegue

我在UINavigationController中有UITableViewController,我想在popover视图中显示并填充viewController中的字段。

故事板看起来像是下面的照片。左VC在按下导航按钮时调用editIdeaSeque。

enter image description here

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"editIdeaSegue"]) {
        UINavigationController *nvc = segue.destinationViewController;
        if (!isIpad) {
            EditIdeaTVC* edi = (EditIdeaTVC*)[nvc.viewControllers objectAtIndex:0];
            if (edi != nil)
                edi.editIdea = sender;
            }
        else {
            UINavigationController* nc = (UINavigationController*)[[segue.destinationViewController popoverPresentationController] presentedViewController];
            EditIdeaTVC* edi = (EditIdeaTVC*)[nc.viewControllers objectAtIndex:0];

            if (edi != nil)
                edi.editIdea = sender;
            }
    }
}

我为segue做准备适用于类似故事板布局的iphone。 Ipad部分崩溃导致edi是一些垃圾指针。

-[EditIssueTVC setEditIdea:]: unrecognized selector sent to instance 0x157d6c7a0

我原以为presentViewController将是UINavigationController ......

1 个答案:

答案 0 :(得分:0)

UINavigationController* nc = (UINavigationController*)[[segue.destinationViewController popoverPresentationController] presentedViewController];

你过度思考这个问题。导航控制器目标视图控制器。这种情况与您之前的代码相同:

UINavigationController *nvc = segue.destinationViewController;

没有任何关于弹出窗口情况会改变目标箭头远端的视图控制器。