2016-04-15 5 views
0

Я пытаюсь разработать приложение с помощью Storyboard и Swift 2.0. У меня есть SideMenuController с UITableView внутри и CenterViewController. Каждый раз, когда я нажимаю на ряд на боковом меню выполнить это действие:Проблема с раскадровки и PerformWithSegueIdentifier

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if (indexPath.row == 0){ 
     self.sideMenuController()?.performSegueWithIdentifier(CenterSegue, sender: nil) 
    }else if(indexPath.row == 1){ 
     self.sideMenuController()?.performSegueWithIdentifier(SaloniSegue, sender: nil) 
    }else if(indexPath.row == 2){ 
     ... 
} 

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

enter image description here

Есть ли способ, чтобы совать их предотвращения RAM перегрузки?

+0

Каков твой тип? – Tien

+0

Это тип шоу (например, Push) –

ответ

0

Да, вы можете сделать это путем доступа к navigationController.viewController собственности Посмотрите на эту функцию ... вы получите некоторое представление .. Кроме того, вместо нажатия ... вы можете performSegue, если вам нужно

func pushController() 
{ 
    // Variable to check whether viewcontroller is present in memory or not 
    var isFound = false; 

     // searching in array of viewControllers of navigationController 
     for item in self.navigationController!.viewControllers 
     { 
      if(item.isKindOfClass(ViewController) == true) 
      { 
       isFound = true; 
      } 
     } 

    if(isFound == false) 
    { 
     // LoadView then push it 
     self.navigationController?.pushViewController(yourViewController, animated: true); 
    } 
    else 
    { 
     // View Is in memory so just pop to it 
     self.navigationController?.popToViewController(yourViewController, animated: true); 
    } 
} 
+0

Я думаю, что не могу использовать это, потому что мой 'self.sideMenuController' это не UINavigationController, а UIViewController. К сожалению, у него нет массива viewControllers для доступа. Я хотел бы уничтожить один ViewController, когда другой нажимает. –

+0

какой тип segue вы используете –

+0

Тип пользовательский, я использую этот контроллер для управления боковым меню. https://github.com/teodorpatras/SideMenuController –

-2

Прежде всего, измените свою навигационную структуру, избавитесь от меню гамбургера/левого меню, это абсолютно sux.

+0

Мне нравится структура бокового меню, с меню гамбургера слева. –

+0

apple нажал/заставил все популярные приложения, чтобы избавиться от него ... проверить популярные приложения, все отключили их меню гамбургеров, потому что в долгосрочной перспективе он нарушает навигацию приложений для пользователя, пользователь может почувствовать, где, черт возьми, я в приложении? в котором есть вкладка/меню и т. д. – turushan

+0

Спасибо, ты прав. Я постараюсь объяснить моему клиенту, действительно ему это нравится :-) –

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