I've got a tab bar and it properly switches between view controllers.
But its only showing a half of the tab bar.
But its only showing a half of the tab bar.

You can try what was mentioned above, but how are you creating the UITabController? in IB or in code? If its in code, there is something incorrect when you're setting the frame.
[self.view addSubview:tabBarController.view];
I'm creating it in code.
Code:[self.view addSubview:tabBarController.view];
But it seems like the view is not correctly sized as its getting pushed from another view.
What is this view you are adding your tab bar controller's view to?
Why don't you make your tab bar the "root" of your hierarchy?
Cause my root view is a navigation controller.
You're not using the tab bar controller correctly. *It* should be your root view and your UINavigationController should be added as one of the view controllers for the tab bar controller (e.g. for the first tab).