Встраивание ViewController через настраиваемый переход в представление контейнера (что-то вроде замены переходов)

До сих пор я использовал UISplitViewController в своем приложении. Чтобы добавить функцию скрытия (перемещение из экрана влево) для masterView, я создал настраиваемый контроллер представления, который содержит две формы представления контейнера masterView и detailsView. Все работает как положено.

Теперь Где-то я использовал замену перехода, чтобы заменить представление подробностей. И здесь возникает проблема. Как я могу создать настраиваемый переход, который встраивает viewController в представление контейнера, как это делает replace segue?


person BangOperator    schedule 01.05.2014    source источник
comment
Посмотрите мой ответ здесь, stackoverflow.com / questions / 23318709 / и посмотрите, что вам нужно.   -  person rdelmar    schedule 01.05.2014


Ответы (1)


Обычно я создаю такой собственный переход:

@interface MyCustomSegue:UIStoryboardSegue

@end
@implementation MyCustomSegue

- (void)perform {

    UIViewController* src = (UIViewController*) self.sourceViewController;
    MyViewControllerClass* dst = (MyViewControllerClass*) self.destinationViewController;
    [src addChildViewController:dst];
    [src.view addSubview:dst.view];

    //This line uses FLKAutolayout library to setup constraints
    [dst.view alignToView:src.view];
}
@end

После этого вы сможете нарисовать свой собственный переход в раскадровке (он должен появиться в меню перехода, когда вы отпустите кнопку мыши после рисования линии).

Это самый простой способ, который я мог придумать, вы можете настроить свой исходный контроллер представления, чтобы иметь настраиваемое представление контейнера (вместо src.view) и ссылку на целевой контроллер представления. Вы также можете написать свой собственный код ограничения AutoLayout вместо использования FLKAutoLayout (что действительно здорово).

person Stefano Mondino    schedule 07.05.2014
comment
Не забудьте вызвать [dst didMoveToParentViewController:src];, это обязательно при добавлении дочернего контроллера представления. - person nacross; 11.09.2014