Sure, the tabbar controller is a container driver of those 4 viewcontrollers that you have. If you want to move from one to the other, it is the tabBarController that takes care of showing one and removing the other. So if in one of them you want to show another viewcontroller that depends on that, it will remain inside the tabBarController, since the calling viewcontroller is in that tabBarController.
What you have to do is when you show that new viewcontroller tell it to disappear the tabBarController and when you come back from that viewcontroller you have to tell it that it has to come back to appear. So in the new viewController that you want to appear you should put
self.tabBarController?.tabBar.isHidden = true
in the viewDidLoad, in the viewWillAppear as best you can and when the viewController is going to close then
self.tabBarController?.tabBar.isHidden = false