UINavigationController has to call method when updates view with a new ViewController

uinavigationcontroller tutorial
check if viewcontroller is in navigation stack swift
add viewcontroller to navigation controller programmatically
uinavigationcontroller example
uinavigationcontroller back button
uinavigationcontroller view hierarchy

I have a UINavigationControllerSubclass. When view controller is popped to some new view controller (by navigationController.popViewController, navigationController.popToRootViewController or even by manually sliding from left to right)

I need to call inside my navigation controller:


What is the best approach to accomplish that?

One way of doing it would be the following:

class CustomNavigationController: UINavigationController {

    override func popToRootViewController(animated: Bool) -> [UIViewController]? {
        return super.popToRootViewController(animated: animated)

    override func popViewController(animated: Bool) -> UIViewController? {
        return super.popViewController(animated: animated)

    private func shouldUpdateBackButtonTitle() {

UINavigationController, A navigation controller is a container view controller that manages one or more Selecting an item in the view controller pushes a new view controller You add and remove view controllers from the stack using segues or using the methods of Specifically, the navigation controller updates the bar button items displayed� If you want to go back from one view controller to a previously displayed one, look into using "unwind segues" - that way you don't have to encode the knowledge of your presentation hierarchy into ViewController C. – Martin Ullrich May 5 '16 at 14:01

When you return to viewController call this viewWillAppear method. Inside that function you can check your rootviewController then you can call your

updateBackbuttonTitle()< function.

Showing and Hiding View Controllers, Presenting a new view controller changes that content by installing a new set of A segue is a visual representation of a transition from one view controller to don't call that method if a navigation controller added the view controller to its To receive the latest developer news, visit and subscribe to our News and Updates. The specified controller is pushed onto the stack and the navigation controller will update its display to show this controller's view. There are a couple limitations. First, the controller must not already be part of the navigation controller's stack. Second, The controller cannot be a UITabBarController. Applies to

You can use viewWillAppear method, and easily update UI Controls super.viewWillAppear(animated)

Managing View Controllers With Container View Controllers, A navigation controller, for example, manages a stack of view controllers. The parent view controller is responsible for setting the size and Open Xcode and create a new project based on the Single View Open MasterViewController. swift and update the viewDidLoad() method as shown below. A method for showing the UINavigationController Root View Controller in UITabBarController using introspection to determine class membership. When programming on iPhone or iPad, it’s common to have a UITabBarController mixed with UINavigationController .

Navigation Controller, We'll also need to set the initial view controller to the navigation controller by corresponds to the navigation controller pushing a new view controller onto the controller to handle updating the name once the saveName method is called. For Example, if you selected tab/view 3 and then press the new item, it should slide in a half-transparent view over tab/view 3. Another great example for this is the Tumblr app. My question is, how do i create a TableBarItem that doesn't refer to a ViewController, but creates a view over the ViewController that is currently on screen?

View Controllers for iOS & Swift – LearnAppMaking, The class has one property called textLabel of type UILabel? , an optional. This function is part of the view controller life-cycle, and its often the first and a new view controller that's pushed onto the navigation controller stack. such as updating the UI with new information from back-end data models� I have figured out my own problem. During character movement through touch, the SKScene's -(void)update:(NSTimeInterval)currentTime method runs that characters class method [_player GPS:currentTime]; which tracks speed and distance. Here's the hiccup, that method sets the character texture according to the direction he is facing.

Passing Data Between View Controllers in iOS: The Definitive Guide, This article has been updated for iOS 12, Xcode 10 and both Swift 4 and Swift 5. Passing data forward happens every time a new view controller comes the prepare(for:sender:) method is called in the source view controller. Now, there is a navigation controller between the source and the destination. I have a UICollectionView with custom cell that has some labels and an Image, I need to get where the image is situated in order to place a mask on top of it, I tried with the following code but every mask gets applied on top of the first cell. This is the code I used:

  • I see, but I need to add function popToViewController and self.interactivePopGestureRecognizer.addTarget and have this logic there too. I just thought that it might be a better solution
  • Im afraid there isn't a single method where you can handle all cases. But it might worth checking UINavigationController documentation extensively.
  • Did you find any solution or approach for your problem? @PaulT.
  • Frankly speaking I already don't remember how I did that, so I'm gonna mark your question as correct
  • no, I have 100 view controllers and don't have base view controller, I need to call this method from navigation controller (viewController->function)