2015-09-27 6 views
2

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

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

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

EDIT:

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

enter image description here

+0

Привет, У меня есть вопрос о вашем взгляде и поп-музыке. Как вы можете переместить UItextView/UILabel вниз после того, как вы нажмете контроллер вида? Спасибо ... – felixwcf

+1

@Felix У меня есть отдельные контроллеры для просмотра «заглянутой» версии и «выскоченной» версии. Версия «popped» - это просто стандартный контроллер представлений, который пользователь увидит, если они будут отключены как обычно. – user3746428

+0

Благодарим вас за быстрый ответ. Решила мою головоломку. – felixwcf

ответ

2

Это работает для меня. Возможно, сделайте условное утверждение в - (void)previewingContext: (id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit, которое поможет вам определить весь экран, на который вы хотите перейти, и как он отображается. Если этот условный оператор выполняется, создайте экземпляр UIViewController с помощью self.storyboard instantiateViewControllerWithIdentifier...., а затем нажмите на него. Heres мой пример:

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

    } 
} 

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

enter image description here

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

+0

Если это поможет, отметьте его как правильно – DevC

0

Я думаю, что вы ответили на свой вопрос. Segue прямо на полный вид. Не обязательно, чтобы вы показывали 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]; 
} 

Конечно, вы используете раскадровки, чтобы вы соответствующим образом отрегулировали.

Дело в том, что они дают вам ссылку на сжатое представление, которое вы представили в режиме ожидания, не означает, что это вид, который вам нужно поп. Это не помогает, что они назвали его viewControllerToCommit.