2

我刚刚在我的应用程序的表格视图中实现了 3D Touch 的 peek and pop 功能。我正在为 peek 视图使用不同的、更简洁的视图控制器,并且我希望 pop 将用户带到视图的完整版本(与 Instagram 应用程序的风格相似)。

我想弄清楚我怎么能做到这一点?当我实例化 peek 时,我看不到如何在代码中做到这一点,所以我唯一能想到的就是在弹出后立即转到完整视图?

有人有想法么?

编辑:

这是我的意思的那种系统:

在此处输入图像描述

4

2 回答 2

2

这对我有用。也许做一个条件语句- (void)previewingContext: (id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit来帮助你确定你想要去的全屏以及它是如何显示的。如果满足此条件语句,则实例化UIViewControllerusingself.storyboard instantiateViewControllerWithIdentifier....然后推送到它。这是我的例子:

- (void)previewingContext(id<UIViewControllerPreviewing>)previewingContext
 commitViewController:(UIViewController *)viewControllerToCommit {


    //this check is only for demonstration purposes
    if (viewControllerToCommit) {
        FullViewController * fullVC = [self.storyboard instantiateViewControllerWithIdentifier:@"fullVC"];
        [self.navigationController pushViewController:exp animated:YES];

    }
}

您可以在界面生成器中设置故事板标识符:

在此处输入图像描述

如果您需要更多帮助,请告诉我,但我需要更多信息。

于 2015-10-13T17:07:04.983 回答
0

我想你回答了你自己的问题。直接转到完整视图。viewControllerToCommit显示on pop不是强制性的。您可能仅使用该精简的 viewController 引用来确定将什么传递给您的完整视图。例如,如果它是一个详细视图,则在您的精简视图中传递该对象,该详细信息是从该视图派生的。

-(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
   SomeClass *detailObj = viewControllerToCommit.detailObject;
   DetailVCClass *detailViewControllerFull = [[DetailVCClass alloc] initWithObject:detailObj];

   // Present the full VC
   [self presentViewController:detailViewControllerFull animated:YES completion:nil];

   // Alternatively, using Nav controller, you might pop onto the stack
   [self.navigationController pushViewController:detailViewControllerFull animated:YES];
}

当然,您正在使用情节提要,因此您会相应地进行调整。

关键是,仅仅因为它们为您提供了对您在 peek 中呈现的精简视图的参考,并不意味着这是您必须弹出的视图。他们命名它并没有帮助viewControllerToCommit

于 2015-10-17T11:41:43.750 回答