【问题标题】:ios10 prepareForSegue popoverPresentationController ObjCios10 prepareForSegue popoverPresentationController ObjC
【发布时间】:2017-02-26 21:42:28
【问题描述】:

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

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

- (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;
            }
    }
}

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

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

我期待presentedViewController 将是UINavigationController ...

【问题讨论】:

    标签: objective-c popover ios10 uistoryboardsegue


    【解决方案1】:
    UINavigationController* nc = (UINavigationController*)[[segue.destinationViewController popoverPresentationController] presentedViewController];
    

    你想多了。导航控制器目标视图控制器。情况与您之前的代码相同:

    UINavigationController *nvc = segue.destinationViewController;
    

    弹出框的情况不会改变目标箭头远端的视图控制器。

    【讨论】:

    • 嗯,这是我尝试的第一件事,发现应用程序崩溃了,所以我开始深入研究 popoverPresentationController 的事情..
    • 我的意思是:删除整个 iPad 检查。关键是这个东西会在 iPhone 和 iPad 上自动运行。一个转场就是一个转场。目的地就是目的地。您的代码将在两种类型的设备上运行相同,无需任何检查。
    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多