View Full Version : UITableView positioning & styling

Aug 18, 2010, 10:54 AM

my app uses a tab bar with 2 navigation based views in which I am adding a custom view (a title bar) between the nav bar and the table view .

- (void)viewDidLoad {
[super viewDidLoad];

// load title bar controller
TitleBarViewController *tbar = [[TitleBarViewController alloc] init];
[tbar setTitleImage:[UIImage imageNamed:@"v2-une.png"]];
[self setTitleBar:tbar];
[tbar release];

// show title bar
[self.navigationController.view addSubview:self.titleBar.view];

When the application is launched with a default selected nav view, I use (void)viewDidAppear:(BOOL)animated to set the table view to a lower Y value so that the title bar is visible.

Where Y = 20 : 20 is the height of my title bar.

self.tableView.frame = CGRectMake(0, 20, 320, 347);

The problem is that when I select a row and push a detail view and hide the bottom bar to display a toolbar, things are messed up.
my title bar's height increases and becomes > 20 which I can't explain why.

Now when I go back to the main table view, its Y is decreased by 20 and sticked to the nav bar. My title ben then appears above the first cell of the table view.

If hit the 2 tab and then go back to the 1st tab, everything is re arranged like expected.

here are some pics to illustrate all that :

can anyone help me figure out why is this happening please ?
may be I am putting my positioning code in the wrong event ?

Aug 18, 2010, 12:02 PM
Are you using a UITableViewController?

I recommend that you not add your title bar to the navbar. Instead have a container view that holds the title bar and the table view. You need to use a UIViewController subclass instead of UITableViewController in this case. The container view will be the view controller's view property. You'll have more control in this way.

Aug 18, 2010, 12:11 PM
thank you for answering PhoneyDeveloper.

yes I use a UITableViewController. Everything is designed in IB.

can your suggestion be done in IB or do I have to do it programmatically ?