The reason the back button is disappearing from the Navigation Bar and you are seeing the deallocation logs are because by default SimpleIOSViewStackController will animate new UIViewControllers in to view and remove the previous one as soon as it has finished transition.

You can change both of these behaviours really easily using a SimpleIOSViewStackNotificationVO when you post an NSNotification to get SimpleIOSViewStackController to change to a new UIViewController. Make the change to the Action handler below.

StoryboardViewController.m


#import "SimpleIOSViewStackNotificationVO.h"

- (IBAction)screenTwoButtonTapped:(id)sender {
   
    [[NSNotificationCenter defaultCenter]
        postNotificationName: @"ShowNibViewController"
            object: [[SimpleIOSViewStackNotificationVO alloc] initWithAnimationFlag:NO AndRemoveFlag:NO]];
   
}
 

Instead of supplying nil as the NSNotification object a SimpleIOSViewStackNotificationVO with it's animation flag and removal flag set is supplied. When you run the app now and navigate from StoryboardViewController to NibViewController there is no animation, the back button remains and there is no deallocation message in XCode's Debug Area. SimpleIOSViewStackController has retained it's reference to this UIViewController. These two flags can be set independently.

It is worth noting that the back button remains when you navigate to ClassViewController and when you tap it you are returned to the first screen, StoryboardViewController as this is preceding child on the view stack.