2013-04-02 2 views
0

Итак, я пытаюсь реализовать салфетки справа, чтобы вернуться к предыдущей функции контроллера.Установить Предыдущий контроллер просмотра как свойство текущего контроллера просмотра

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

- (void)initPreviousViewController:(GGMainViewController *)previous 
{ 
    self.previousViewController = previous; 
    self.previousViewController.view.frame = self.currentView.bounds; //self.currentView is declared elsewhere (in the init of the current view controller) 
    [self addChildViewController:self.previousViewController]; 
    [self.currentView addSubview:self.previousViewController.view]; 
    [self.previousViewController didMoveToParentViewController:self]; 
{ 

^Я называю этот метод в предыдущем контроллере представления после инициализации текущего контроллера вида, и перед толкая текущий вид контроллер

Если изменить self.previousViewController = previous; к self.previousViewController = [GGMainViewController alloc] init]; это работает. Однако я не хочу повторно инициализировать предыдущий контроллер.

Итак, как установить предыдущий контроллер представлений как свойство текущего контроллера вида.

О, я также являюсь первым таймером iOS, поэтому, если это не то, что рекомендуется, сообщите мне.

Обоснование позади моего мышления:

Обычно пользователь будет просто нажать на кнопку, и UINavigationController будет делать трюк, но так как я использую функциональность салфетки, я думаю, что пользователь должен видеть предыдущий контроллер представления за контроллером текущего вида, когда они прокручивают экран.


В соответствии с просьбой Как позвонить currentViewController из previousViewController

- (void)displayCurrentViewController:(id)sender 
{ 
    GGNextViewController *next = [[GGNextViewController alloc] init]; 
    [next initializeExploreViewController:self]; // If I comment this out, everything is ok (screen is not black,etc. apart from being able to swipe backwards 
    [self.navigationController pushViewController:next animated:YES]; 
} 
+0

введите код, относящийся к тому, как ваше представление текущего контроллера вида с предыдущего контроллера просмотра также ... –

+0

Хорошо, дайте мне минутку, чтобы получить его здесь :) @BhanuPrakash – GangstaGraham

+0

@BhanuPrakash It's up! – GangstaGraham

ответ

1

Ваших помощью self.navigationController для толкания текущего контроллера представления, поэтому вы можете вызвать метод, когда-либо право красть жест выстрелил.

Попробуйте этот код в текущем контроллере представления (GGNextViewController.m) ...

1. Добавьте селектор rightSwipeGestureAction() на жест распознаватель, который у вас есть.

2.

-(void)rightSwipeGestureAction 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
0

Оказывается, что следующие строки были причиной проблемы. Я просто решил прокомментировать их, а потом это сработало, без черного экрана.

[self addChildViewController:self.previousViewController]; 
[self.previousViewController didMoveToParentViewController:self]; 

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

Смежные вопросы