kirans_6891
kirans_6891

Reputation: 121

pushViewController doesnt work even though i have a navigationController

I have a UIViewController with two UITableView's in it. When i select a row in the first UITableView it has to push the same UIViewController which doesnt happen.

In UIViewController.h i have,

FirstTableViewController *firstController;
SecondTableViewController *secondController;

In UIViewController.m i have,

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    if (firstController == nil) {
        firstController = [[FirstTableViewController alloc] init];
    }
    if (secondController == nil) {
        secondController = [[SecondTableViewController alloc] init];
    }
    UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithRootViewController:firstController];
    firstController.product = self.product;
    [firstTable setDataSource:firstController];
    [firstTable setDelegate:firstController];
    firstNavigationController.view = firstController.tableView;
}

In FirstTableViewController.m, didSelectRowAtIndexPath i have,

[self.searchDisplayController setActive:YES animated:YES];
UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.product = prod;
NSLog(@"Navigation controller is %@",self.navigationController); //not null
[[self navigationController]pushViewController:controller animated:YES];

Please help.

EDIT #1: UIViewController is called from the FlipsideViewController of the UtilityApp.

Upvotes: 1

Views: 674

Answers (4)

Akram Khan
Akram Khan

Reputation: 61

LoginViewSimpleController *loginViewSimple = [[LoginViewSimpleController alloc]init];

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:loginViewSimple];

[self setNavigationController:navController];

Have you identify both tableviews ? Can you Post log status here ?

Upvotes: 0

tausun
tausun

Reputation: 2162

Add a property to your AppDelegate UINavigationController *nav add this line to AppDelegate.m in application didFinishLaunching method

navigationControl = [[UINavigationController alloc] initWithRootViewController:yourFirst ViewController];

Go to yourFirstViewController, add an UINavigationController *nav property and add these lines to viewDidLoad method

AppDelegate *app = [[UIApplication sharedApplication] delegate];
self.nav = app.nav;

Use this line to push any viewController

[self.nav pushViewController:controller animated:YES];

Upvotes: 1

Vishal
Vishal

Reputation: 556

Use this Code in "didSelectRowAtIndexPath"

UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil];


     [self.navigationController pushViewController:controller animated:YES];

     [viewController release];

Upvotes: 0

DrummerB
DrummerB

Reputation: 40201

If you want to show a view controller modally, you should use presentViewController:animated:completion: and not pushViewController:animated:.

[self presentViewController:controller animated:YES completion:nil];

Upvotes: 0

Related Questions