10

私は探し回っていましたが、残念ながら運がありませんでした。

私のアプリでは、ユーザーがアプリを初めて起動するときにサインイン/サインアップする必要があります。(NSUserDefaultsを使用して)最初の起動を決定する方法を知っていますが、サインイン/サインアップコントロールを含むモーダルを提示しようとすると、何も起こりません。

これが私が持っているものです:

-(void)viewDidLoad {
    [self showLogin];
    [super viewDidLoad];
}

-(void)showLogin {    
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"AccountView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

ただし、何も起こりません。メインビューは通常どおり読み込まれます。どんな助けでも大歓迎です。

-Giles

4

4 に答える 4

13

[アップデート]

を使用するだけで修正できます。

-(void)viewDidAppear:(BOOL)animated 
{

}

それ以外の

-(void)viewDidLoad
{

}

とにかくありがとう!

/白痴

于 2010-01-04T05:10:16.113 に答える
8

同じ問題が発生し、viewDidAppearも使用することになりました。viewDidAppearアプローチの唯一の問題は、他のUIViewControllerを上にロードしてからベースを再表示すると、セットアップコードが何度も呼び出されることです。このViewControllerにブール値(YESに初期化)を追加し、その値を確認してから、何をするかを決定する必要がありました。これが誰かを助けることを願っています...

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:(BOOL)animated];

    if(justLaunched)
    {
        justLaunched = NO;
        if(settingsFileExists)
        {
            [self displayMainView];
        }
        else
        {
            [self displaySetupView];
        }
    }
}
于 2010-01-19T11:25:10.787 に答える
2

viewDidLoad関数でperformSelector:withObject:afterDelayを使用するのはどうですか?それが私がそれを行う方法であり、0.1秒の短い遅延があります。

于 2010-05-31T09:53:07.917 に答える
0

そして、これを呼び出すのviewDidLoadはあまり安全ではありません。iPhoneが空きメモリを取り戻すためにいくつかのビューを解放する必要がある場合、実行時にシーケンスviewDidLoad/が発生する可能性があります。viewDidUnload

このようなシーケンスの副作用は、ログインコントローラが表示されることです...

あなたが言ったようにviewDidAppear見た目は良くなりますが、単にappDidFinishedLaunchingあなたの代表の最後にそれを置くのではありませUIApplicationんか?

于 2010-01-19T16:06:30.840 に答える