Использование сжатого взгляда в 3D Touch

Я только что реализовал функцию трехмерного прикосновения в виде таблицы в моем приложении. Я использую другой, более сжатый контроллер представления для просмотра, и я хотел бы, чтобы всплывающее окно привело пользователя к полной версии представления (в стиле, аналогичном приложению Instagram).

Я пытаюсь понять, как я мог это сделать? Я не могу понять, как я могу сделать это в коде, когда я создаю экземпляр peek, поэтому единственное, о чем я могу подумать, - это сразу перейти к полному представлению после pop?

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ:

Это такая система, которую я имею в виду:

2 ответа

Это работает для меня. Может быть, сделать условное заявление в - (void)previewingContext: (id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit это поможет вам определить полный экран, к которому вы хотите перейти, и способ его отображения. Если это условное утверждение выполнено, создайте экземпляр UIViewController с помощью self.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];

    }
}

Вы можете установить свой идентификатор раскадровки в конструкторе интерфейса:

введите описание изображения здесь

Дайте мне знать, если вам понадобится дополнительная помощь, но мне нужна дополнительная информация.

Я думаю, что вы ответили на свой вопрос. Перейдите непосредственно к полному виду. Не обязательно показывать viewControllerToCommit на поп. Вы можете использовать эту сокращенную ссылку 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,

Другие вопросы по тегам