user3129284 user3129284 - 1 year ago 257
Swift Question

Navigation Controller Push View Controller


How to navigate from one view controller to another simply using a button's touch up inside event?

More Info

What I tried in a sample project, in steps, was:

  1. Create the sample single view application.

  2. Add a new file -> Objective-C Class with XIB for user interface (ViewController2).

  3. Add a button into ViewController.xib and control click the button to ViewController.h to create the touch up inside event.

  4. Go to the newly made IBAction in ViewController.m and change it to this...

    - (IBAction)GoToNext:(id)sender
    ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];

    [[self navigationController] pushViewController:vc2 animated:YES];

The code runs without errors and I tested the button's functionality with NSLog. However it still doesn't navigate me to the second view controller. Any help would be appreciated.

Answer Source

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController"
UINavigationController *navigation = [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = navigation;
[self.window makeKeyAndVisible];
return YES;


//In viewcontroller1.M

- (IBAction)GoToNext:(id)sender 
ViewController2 *vc2 = [[ViewController2 alloc] init];     
[self.navigationController pushViewController:vc2 animated:YES];



 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

let navigat = UINavigationController()
let vcw = ViewController(nibName: "ViewController", bundle: nil)

// Push the vcw  to the navigat
 navigat.pushViewController(vcw, animated: false)

// Set the window’s root view controller
self.window!.rootViewController = navigat

// Present the window
return true


//in ViewController.swift

@IBAction func GoToNext(sender : AnyObject)
let ViewController2 = ViewController2(nibName: "ViewController2", bundle: nil)

self.navigationController.pushViewController(ViewController2, animated: true)