0

Xcode 4 で Utility Application テンプレートを使用してアプリを作成しました。

ユーザーが URL を入力できるように、最初の起動時にアプリの裏面を表示する必要があります。

私のmainViewControllerには次のものがあります:

- (void)viewDidAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if(![defaults stringForKey:@"url"]){
        // Flip to the back page
        [self showInfo: self];

        NSLog(@"No url, flip");
    }else{
        NSLog(@"dont flip");
    }
}

- (IBAction)showInfo:(id)sender
{
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

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

    [controller release];
}

「URL がありません。フリップ」がログに記録され、showInfo メソッドが呼び出されますが、フリップしません。私は何を間違っていますか?

4

2 に答える 2

1

コード内の 1 行を編集するだけです。

- (void)viewDidAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if(![defaults stringForKey:@"url"]){
        // Flip to the back page
        [self performSelector:@selector(showInfo:) withObject:self afterDelay:0.1];

        NSLog(@"No url, flip");
    }else{
        NSLog(@"dont flip");
    }
}
于 2011-09-09T19:52:33.173 に答える
0

あなたのshowInfo:方法は正しい軌道に乗っていますが、うまくいかないと思います。これは、あなたが求めていることを実行するアプリにあるコードの例です。

    PersonDetailViewController *pvc = [[PersonDetailViewController 割り当て]
                             initWithNibName:@"PersonDetailView" bundle:nil];

    UIView *container = self.parentViewController.tabBarController.view;

    [UIView beginAnimations:nil コンテキスト:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:コンテナキャッシュ:YES];
    [コンテナ addSubview:pvc.view];
    [pvc viewWillAppear:はい];
    [self viewWillDisappear:YES];
    [UIView commitAnimations];

このすべてのポイントは、達成したい移行についてより多くの情報を提供する必要があるということです. UIViewビューの遷移やその他のビューベースのアニメーションの設定を処理するクラス メソッドが多数あります (ここに示されています)。

それで、これは何をしているのですか?コードは、新しいビュー コントローラーのビュー (pvc.view) を「コンテナー」のサブビューとして追加しています。このアプリでは、「コンテナー」ビューは、新しいビュー (pvc.view) がフリップインされると邪魔にならないようにフリップされるビューです。

viewWillAppear:新しいビューと古いビューの両方を呼び出すことも重要です。これviewWillDisapear:により、ビューが行き来するときに発生すると予想されるすべての適切なことが発生します。[このレシピは「昔ながらの」ものと見なされる場合があります。iPhone OS 2.x の時代 (当時は iOS と呼ばれていませんでした)、ユーティリティ テンプレートには、viewWillAppear や viewWillDisappear などを呼び出す、このようなコードがありました。ここに示したコードは、アプリ ストアの配送アプリケーションに含まれているため、いわばコーシャのままです。:-) ]

PersonDetailViewController (この例) には、一貫性のためにすべてを元に戻す同様のコードがあることに注意してください。

于 2011-09-09T19:43:28.610 に答える