0

私はiOS開発に本当に慣れていないので、いくつかのコースに従っています。目標は、2011 年の初めに元同僚によって作成された非常に古いアプリケーションを修正することです。修正できないこの問題が発生しています。

ログイン画面を表示する ViewController を提示したいと思います。ただし、ViewController が表示されると、navigationController とステータスバーの下に隠れます。このエラーも表示されます:

デタッチされたView ControllerでView Controllerを提示することはお勧めできません

コードは次のとおりです。

    Login *fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]];
    [fvController setTitle:@"Login"];
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:fvController];
    [fvController setKc:self];
    [self presentViewController:navCon animated:YES completion:nil];
    [fvController release];
    [navCon release];
    navCon = nil;
    fvController = nil;

私を助けてくれる人はいますか?

前もって感謝します!

4

2 に答える 2

0

これは、ViewController の作成したインスタンスを解放しているためです。コードを次のように変更してみてください。

viewController の上部にある @implementation の下で、viewControllers を宣言します。

@implementation yourViewController
{
   Login *fvController;
   UINavigationController *navCon;
}

コードを次のように変更します

fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]];
[fvController setTitle:@"Login"];
navCon = [[UINavigationController alloc] initWithRootViewController:fvController];
[fvController setKc:self];
[self presentViewController:navCon animated:YES completion:nil];

そして、解放オブジェクトを dealloc メソッドに追加します

- (void)dealloc 
{
    [fvController release];
    [navCon release];
    navCon = nil;
    fvController = nil;
}
于 2014-06-11T20:41:52.847 に答える