Note that there are some explanatory texts on larger screens.

plurals
  1. POPushViewController Not working
    primarykey
    data
    text
    <p>I am trying to learn Objective-C and have run into a problem with pushing a new View controller when a Button is clicked. I have a switch View Controller that is responsible for pushing the settings.nib file when I press the settings toolbar button. Here is the code of the ViewController:</p> <pre><code>// // ViewController.h // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import &lt;UIKit/UIKit.h&gt; @class ReaderMain; @class Settings; @class GoogleClientLogin; @interface ViewController : UIViewController { ReaderMain *readerMain; Settings *settings; GoogleClientLogin *gClientLogin; UIBarButtonItem *mSignInOutButton; UIBarButtonItem *mRefresh; } @property (nonatomic, retain) ReaderMain *readerMain; @property (nonatomic, retain) Settings *settings; @property (nonatomic, retain) GoogleClientLogin *gClientLogin; @property (nonatomic, retain) IBOutlet UIBarButtonItem *signInOutButton; @property (nonatomic, retain) IBOutlet UIBarButtonItem *refreshButton; -(IBAction) switchViews:(id)sender; @end </code></pre> <p>ViewController.m file</p> <pre><code>// // ViewController.m // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import "ViewController.h" #import "ReaderMain.h" #import "Settings.h" @implementation ViewController @synthesize readerMain; @synthesize settings; @synthesize signInOutButton = mSignInOutButton; @synthesize refreshButton =mRefresh; @synthesize gClientLogin; /* // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization } return self; } */ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { ReaderMain *readerController= [[ReaderMain alloc] initWithNibName:@"ReaderMain" bundle:nil]; self.readerMain = readerController; [self.view insertSubview:readerController.view atIndex:0]; [readerController release]; [super viewDidLoad]; } -(IBAction)switchViews:(id)sender { if(self.settings ==nil) { //[mSignInOutButton setTitle:@"SignIn"]; Settings *googleController = [[Settings alloc]initWithNibName:@"Settings" bundle:nil]; self.settings = googleController; [googleController release]; } [UIView beginAnimations:@"View Flip" context:nil]; [UIView setAnimationDuration:1.00]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; if(readerMain.view.superview ==nil) { [mSignInOutButton setTitle:@"Settings"]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO]; [readerMain viewWillAppear:YES]; [settings viewWillDisappear:YES]; [settings.view removeFromSuperview]; [self.view insertSubview:readerMain.view atIndex:0]; [settings viewDidDisappear:YES]; [readerMain viewDidAppear:YES]; //[mSignInOutButton setTitle:@"SignOut"]; } else { [mSignInOutButton setTitle:@"Back"]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:NO]; [settings viewWillAppear:YES]; [readerMain viewWillDisappear:YES]; [readerMain.view removeFromSuperview]; [self.view insertSubview:settings.view atIndex:0]; [readerMain viewDidDisappear:YES]; [settings viewDidAppear:YES]; } [UIView commitAnimations]; } /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } */ - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { [readerMain release]; [settings release]; [mSignInOutButton release]; [mRefresh release]; [super dealloc]; } @end </code></pre> <p>This works as expected. After loading the settings.nib file, I want to load another viewController for advanced settings. I tried to do this as below:</p> <p>Settings.h file</p> <pre><code>// // Settings.h // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import &lt;UIKit/UIKit.h&gt; #import "ViewController.h" @interface Settings : UIViewController { IBOutlet UIButton *googleReaderSettings; } @property (nonatomic, retain) IBOutlet UIButton *googleReaderSettings; -(IBAction) goToViewTwo; @end </code></pre> <p>The settings.m file</p> <pre><code>// // Settings.m // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import "Settings.h" #import "GoogleClientLogin.h" #import "iReaderAppDelegate.h" @implementation Settings @synthesize googleReaderSettings; -(IBAction)goToViewTwo{ GoogleClientLogin *gClient=[[GoogleClientLogin alloc]initWithNibName:@"GoogleClientLogin" bundle:[NSBundle mainBundle]]; [self.navigationController pushViewController:gClient animated:YES]; [gClient release]; } /* // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization } return self; } */ /* // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; } */ /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } */ - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { [googleReaderSettings release]; [super dealloc]; } @end </code></pre> <p>Finally my Delegate File:</p> <pre><code>// // iReaderAppDelegate.h // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import &lt;UIKit/UIKit.h&gt; @class ViewController; @class Settings; @interface iReaderAppDelegate : NSObject &lt;UIApplicationDelegate&gt; { UIWindow *window; IBOutlet ViewController *switchViewController; IBOutlet ViewController *settings; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet ViewController *switchViewController; @property (nonatomic, retain) IBOutlet ViewController *settings; @end </code></pre> <p>And the Delegate.m file</p> <pre><code>// // iReaderAppDelegate.m // iReader // // Created by Vivek Manjunath on 22/08/10. // Copyright (c) 2010 __MyCompanyName__. All rights reserved. // #import "iReaderAppDelegate.h" #import "ViewController.h" @implementation iReaderAppDelegate @synthesize window; @synthesize switchViewController, settings; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [window addSubview:switchViewController.view]; [window addSubview:settings.view]; [window makeKeyAndVisible]; return YES; } - (void)applicationWillTerminate:(UIApplication *)application { // Save data if appropriate. } - (void)dealloc { [window release]; [switchViewController release]; [settings release]; [super dealloc]; } @end </code></pre> <p>But, when I press the button to load the GoogleClientLogin view, it does nothing. There is no console output either. Can someone help me with this issue? I fixed the memory leaks and NSLog shows that it is entering goToViewTwo.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload