Question

I'm relatively new to iOS Objective-C development, and I've come across a problem that I can't find a solution to.

I have a Table View Controller, with two prototype cells on it, which populate fine. This Table View Controller is one of three Tab Views, and the View that sends to the Tab Views has a Navigation Controller. This means that the views within the Tab Views also have a Navigation bar. The bar works fine, in terms of the "back" button working as expected, and the bar being in position. However, (at least on the List View) the Navigation Bar isn't fully recognised - it's title doesn't appear, and the table cells start directly below the status bar, rather than below the navigation bar.

Here's a couple of screenshots showing the problem: what appears in Xcode (what I expect to happen) what appears in Xcode (what I expect to happen) what actually appears on my testing device (iPhone 4, iOS 7.0.4) And then on the device, this is what actually appears - the Back button in place and working fine, but no title field, and the table cells start too high.

I've tried adding Navigation Bar's and Navigation Items, and while adding a Navigation Item allows me to put a title on in Xcode, it still doesn't appear on the device in testing. I also tried to add another Navigation Controller just before this view, but that didn't resolve the issue either, and it caused navigation problems further down in the heirachy.

Hope I've been clear enough, please say if I need to post more information - I'm relatively new to Xcode and so not sure what exactly is applicable and what isn't. Thanks!

Was it helpful?

Solution

please try this code, it might fix your table position

// Since in iOS7 the nav bar is translucent by default, so the table view starts at (0,0)
// you can either disable the translucent, which i don't recommend unless you really want to
// or just add 64 pixel on the top of your table view
[self.YOURTABLEVIEW setContentInset:UIEdgeInsetsMake(64, 0, 0, 0)];

and for the title, please try this

self.tabBarController.navigationItem.title =@"YOUT TITLE NAME";

Hope that helps..

OTHER TIPS

Assuming your hierarchy as

NavigationController -> ViewController  -> TabBarController -> ViewController1
                                                            -> ViewController2
                                                            -> ViewController3

If you want to hide navigation item in viewcontroller1, Add the following line

 self.navigationController.navigationBarHidden = YES;

If you want to show title in viewcontroller2, Add the following line in

self.navigationController.navigationBarHidden = NO; //add this if you hide navItem viewcontroller1
[self.parentViewController.navigationItem setTitle:@"Title"];

If you want to hide backbutton and show title in viewcontroller3, Add the following line

 self.navigationController.navigationBarHidden = NO;
[self.parentViewController.navigationItem setTitle:@"Contacts"];

self.parentViewController.navigationItem.hidesBackButton=YES; 

Add this lines to viewdidAppear method instead of ViewdidLoad ,if you have problems inshowing when switching tabs.

I had the same problem, but what I did to create this problem was that my buttons action was connecting to the actual table itself and not the table Controller. I removed the modal action and created a new action to the table controller and it fixed the problem.

Try to click the Navigation Bar from your storyboard or nib.

enter image description here

Then add your title to the property.

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top