Использование сжатого взгляда в 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
,