2016-11-07 4 views
0

Ссылка ниже показывает мою раскадровку, и я думаю, что моя проблема намного проще понять с изображением. My tabBarController управляет вкладкой, встроенной в navigationController. UIButton «start» приводит к следующему виду с помощью шоу-сегу (синяя стрелка). В этом представлении элемент кнопки панели снова приводит к последнему viewController с помощью show segue (зеленая стрелка). С последнего контроллера представления я хочу вернуться к своему первоначальному, опять же с помощью кнопки панели (черная стрелка). Но теперь есть проблема, что мой начальный контроллер представления показывает «обратную кнопку» в верхнем левом углу (конечно, потому что по черной стрелке начальный вид просто добавлен в стек навигации, правильно ?!). Я решил это, вернувшись к контроллеру панели вкладок (красная стрелка). Теперь больше нет кнопки «назад», но теперь мне интересно, не существует ли в стеке моих навигационных представлений, которые все еще существуют в фоновом режиме и теряют память или что-то в этом роде. Как я могу удалить этот стек или он даже существует? (может быть, я понял, что это совершенно неправильно) Или есть даже лучший способ вернуться к моему первому представлению?удаление «стека» видов навигации Xcode swift

Извините за непрофессиональное описание моей проблемы, но я только начал кодирование, поэтому у меня нет правильных слов для некоторых из проблем.

большое спасибо!

my Storyboard looks like this

+0

Использовать размольный сег – PeejWeej

ответ

1

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

 override func viewDidLoad() { 
    super.viewDidLoad() 
    //this will add a button to top right of the nav bar, 
    //change "ButtonName" to a title you want 
    //this button will call the blackArrow function 
    self.navigationItem.rightBarButtonItem = UIBarButtonItem (
     title: "ButtonName", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.blackArrow)) 
} 


func blackArrow() { 
//this function navigates to the initial view controller of the navigation controller 
if let navigationController = self.navigationController { 
    navigationController.popToRootViewController(animated: true) 

    } 
} 
+0

спасибо! И нужно ли мне удалять стек диспетчеров view или стека сводится только к контроллеру корневого представления, если я вернусь к этому? –

+0

Вам не нужно удалять стек контроллеров view, если они вам нужны, и он не сводится только к контроллеру корневого представления. Контроллер навигации просто отображает начальное представление, и вы можете перемещаться по другим подключенным к нему контроллерам представлений, например, в первый раз, например, в синей, а затем зеленой стрелке. –