2

私のアプリは に始まりますLoginViewController。ログインビューには「登録」ボタンが 1 つあり、コードは以下のとおりです。[登録] をクリックしてアプリを起動しても、何も起こりません。しかし、ログインしてログアウトすると、登録ボタンは正しく機能します。

これが起こる問題は何ですか?

AppDelegate:

...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    //Load View Controllers;

    self.vcClubs = [[[ClubsViewController alloc] init] autorelease];
    self.vcParties = [[[PartiesViewController alloc] init] autorelease];
    self.vcEditProfile = [[[EditProfileViewController alloc] init] autorelease];

    self.navClubs = [[[UINavigationController alloc] initWithRootViewController:self.vcClubs] autorelease];
    self.navClubs.navigationBarHidden = YES;

    self.navParties = [[[UINavigationController alloc] initWithRootViewController:self.vcParties] autorelease];
    self.navParties.navigationBarHidden = YES;

    // Load Login View
    UIViewController *loginView = [[[LoginViewController alloc] init] autorelease];
    self.window.rootViewController = loginView;
    [self.window makeKeyAndVisible];

    return YES;
}
...
- (void)login
{
self.vcMenu = [[[MenuViewController alloc] init] autorelease];
self.vcLocationMenu = [[[LocationMenuViewController alloc] init] autorelease];
self.mainController = [[[MainViewController alloc] init] autorelease];
self.mainController.leftViewController = self.vcMenu;
self.mainController.rightViewController = self.vcLocationMenu;

[self.mainController setMainViewController:self.navParties];
[self.mainController showMainViewControllerAnimated:YES];

self.window.rootViewController = self.mainController;

CATransition *transition = [[[CATransition alloc] init] autorelease];
transition.duration = 1;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromBottom;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.window.layer addAnimation:transition forKey:@"login"];
}
...

LoginController.php:

...
- (IBAction)onTapSignupButton:(id)sender
{
RegisterViewController *controller = [[[RegisterViewController alloc] init] autorelease];
[self.navigationController pushViewController:controller animated:YES];
NSLog(@"%@", self.navigationController);
}
...

アプリの開始時に NSLOG を返します。

2013-02-18 02:18:29.986 App[32652:c07] (null)
4

4 に答える 4

2

奇妙に見えるかもしれません。しかし、私はこれと同じ種類の間違いをしました。それがあなたを助けることを願っています..

AppDelegate で UInavigationController を初期化したかどうかを確認します。はいの場合、なぜこれを取得したのかわかりません...そうでない場合は、次のコードを試してください

RegisterViewController *controller = [[[RegisterViewController alloc] init] autorelease];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:controller]
[self.navigationController pushViewController:controller animated:YES];    

編集したコードに従って

 // Load Login View
UIViewController *loginView = [[[LoginViewController alloc] init] autorelease];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:loginView]
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];

ハッピーコーディング!!!

于 2013-02-18T04:31:57.040 に答える
1

初めて試すときは、LoginViewControllerがナビゲーションコントローラーにラップされていないようです。ログイン/ログアウトサイクルによってログインコントローラーがナビゲーションスタック内に配置されるかどうかを確認し、初めてログインが表示されたときにそれが発生しない理由を確認します

于 2013-02-09T00:01:30.567 に答える
0

これを試して、

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

[self.navigationController pushViewController:controller animated:YES];
于 2013-02-18T04:57:34.563 に答える
0
RegisterViewController *controller = [[[RegisterViewController alloc] init] autorelease];
[self.navigationController pushViewController:controller animated:YES];

Your code is not right because of Objective C memory management Firstly, you should check if your navigation controller is not nil. And then^ the proper code will look like

RegisterViewController *controller = [[RegisterViewController alloc] init];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
于 2013-02-18T05:04:54.707 に答える