2013-05-17 3 views
0

Я использую ECSliding, и у меня есть эта проблема!Открытие ECSlidingViewController от контроллера нормального вида

В моем проекте есть эти файлы:

InitViewController (ECSlidingController)

FirstViewController (UIViewController)

SecondViewController (UIViewController)

LeftMenuViewController (UIViewController)

ThirdViewController (UIViewController)

Я использую InitView для instatiate мой FirstView как TopView, сдвинув вправо открывает LeftMenu. В LeftMenu есть две кнопки, одна кнопка загружается как верхний вид FirstView, второй - второй.

В моей первой и SecondView есть идентичная кнопка, которая загружает ThirdView не в качестве контроллера Topview, но как новый взгляд:

ThirdViewController *third = [self.storyboard 
instantiateViewControllerWithIdentifier:@"Third"]; 
[self presentViewController:third animated:YES completion:nil]; 

В моей ThirdView 2 кнопки, одна кнопка загружает FirstView, второй один загружает SecondView. Поскольку ThirdView - это не вид сверху, но другое мнение, я должен вспомнить ECSliding, чтобы открыть мой FirstView или SecondView. мне удалось загружая FirstView из моего ThirdView, используя мой InitView

InitialSlidingViewController *home = [self.storyboard 
instantiateViewControllerWithIdentifier:@"Init"]; 
[self presentViewController:home animated:YES completion:nil]; 

Но как я могу загрузить SecondView от моего ThirdView? Мой вопрос в основном заключается в том, как я могу загрузить что-то, использующее ECSliding после обычного просмотра.

+0

Первый, второй и третий находятся в контроллере навигации контроллера верхнего уровня? И вы хотите вернуться, от третьего до первого или второго? – Wain

+0

@Wain все это класс UIViewController, только InitViewController является классом ECSliding, нет контроллера навигации – Tortuga

+0

. Таким образом, вы нажимаете различные кнопки, и каждый изменяет контроллер вида, установленный как контроллер верхнего уровня в контроллере представления ECSliding? Вам действительно нужно объяснить структуру лучше, если вопрос касается навигации по этой структуре. – Wain

ответ

1

От Third мы хотим перейти назад к контроллеру с раздвижным окном и сменить контроллер верхнего вида. Что вы сейчас делаете с этим кодом:

InitialSlidingViewController *home = [self.storyboard instantiateViewControllerWithIdentifier:@"Init"]; 
[self presentViewController:home animated:YES completion:nil]; 

Создает совершенно новый контроллер режима просмотра. В конце концов, сделав это, у вас не хватит памяти, потому что у вас будет выделено сотни представленных представлений и никогда не будет видно.

Итак, что мы хотим сделать, это дать Third свойство:

@property (weak, nonatomic) ECSlidingViewController *slideController; 

И мы хотим, чтобы установить это свойство перед представлением Third:

ThirdViewController *third = [self.storyboard instantiateViewControllerWithIdentifier:@"Third"]; 
third.slideController = self.slidingViewController; 
[self presentViewController:third animated:YES completion:nil]; 

Теперь, когда одна из кнопок нажав на третье, мы можем сказать: «что отображается? Можем ли мы просто уволить или нам нужно изменить и уволить?«:

- (void)oneButtonPressed { 
    if ([self.slideController.topViewController isKindOfClass:[SecondViewController class]]) { 
     FirstViewController *first = [self.storyboard instantiateViewControllerWithIdentifier:@"First"]; 
     self.slideController.topViewController = first; 
    } 

    [self dismissViewControllerAnimated:YES]; 
} 

Вам нужно написать соответствующий метод для twoButtonPressed и вы сделали

Для вашего нового комментария, а не представляя third, вместо этого вы должны поместить его в контроллер навигации и настоящее. что. Тогда, когда вам нужно представить fourth и fifth вы просто толкать их в контроллер нав и совать их снова. при необходимости вы также можете дать им ссылку на slideController.

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController :third]; 
[self presentViewController:nav animated:YES completion:nil]; 
+0

Извините, что беспокою вас снова! У меня есть «FourthViewController» и «FifthViewController». Оба используют ECSliding. Мне нужно загрузить «FourthViewController» с кнопки в «ThirdViewController», а затем загрузить «FifthViewController» с кнопки в «FourthViewController». Мне нужно было вернуться с моего «FifthViewController» на мой «FourthViewController» и от моего «FourthViewController» до моего моего «FirstViewController». Как я могу это сделать? – Tortuga

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

  • Нет связанных вопросов^_^