Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pushing UIViewController to NavigationController does not actually push the view

I have this code in my table view controller (and delegate):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    DetailStatus *detailViewController = [[DetailStatus alloc] initWithNibName:@"DetailStatus" bundle:nil status:[mStatuses objectAtIndex:indexPath.row]];
    [[self navigationController] pushViewController:detailViewController animated:YES];
    [detailViewController release];     
    [self.tableView deselectRowAtIndexPath:indexPath animated:NO];
    NSLog(@"exiting didselectrow");

}

And in my DetailStatus class:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil status:(NSDictionary *)pStatus {
    NSLog(@"I am being called %d", [pStatus objectForKey:@"id"]);
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        // some stuff
    }
    return self;
}

The funny thing is, my DetailStatus is actually being initialised, in the console window, it even outputs "I am being called 000001" but strangely the view is not being pushed to the table view...

I've checked the nib name, and it's ok. I checked the DetailStatus heading file, it looks ok (like this):

@interface DetailStatus : UIViewController {

So does anyone know why the view is not being pushed to the window even if I've initialised it and pushed it?

UPDATE: I tried logging some debugging messages to viewDidLoad in DetailStatus, and it seems like the view is not loaded even though the class was instantiated... I wonder why.

UPDATE2: I have a feeling that this might be my navigation controller organisation that's wrong.. I have this following:

Login page -> customtabbar -> First table view -> DetailStatus
                           -> Second table view -> DetailStatus

I think I'm only maintaining one navigation controller in that hierarchy. I've never created other navigation controllers. I only push view after another.

Thank you everyone for the answers! I will give out the bounty soon, I'll let other people vote first before the bounty expires.

like image 285
Enrico Susatyo Avatar asked Feb 26 '23 15:02

Enrico Susatyo


1 Answers

After looking at it,the scenario seems to be same like me.What I faced for the first time when doing Tab+Navigation.

I am sure that there is some problem with your Tab+Navigation based application. Although it shows the Tab as well as navigation are not able to navigate the basic flow.And it is very difficult to solve your problem with such less code.

Instead of this, I had an alternate solution for the same:

Once you have a tab bar in a XIB, the easiest way to approach this is to drag a UINavigationController object over from the Library window (looks like a left nav bar button on a gold background) into the Tree View for your tab bar (the text only view, not the GUI). Place it under the tab bar, then drag your existing view controller under the tab bar controller instead of under the tab bar.

When you go to view that tab you should then see a navigation bar on the top of it... if you are loading the navigation controller from another xib, you'll modify the nav bar in the tab bar xib.

else you can below you can follow the best url for the same:

http://books.google.co.in/books?id=2yYlm_2ktFYC&pg=PA179&lpg=PA179&dq=navigation+with+the+tab+based+application+iphoneSDK&source=bl&ots=nf2YYjX5Am&sig=COpHj9wOtsDChQBglpsljSTsElw&hl=en&ei=3ZoFTeGSOI_tsgbc_Iz6CQ&sa=X&oi=book_result&ct=result&resnum=6&ved=0CDAQ6AEwBQ#v=onepage&q&f=false

http://www.youtube.com/watch?v=LBnPfAtswgw

Hope this will surely solve your problem.

like image 142
Ajay Sharma Avatar answered Mar 23 '23 00:03

Ajay Sharma