1

私のアプリは、テーブル ビュー コントローラーとビュー コントローラーで構成されています。テーブルビューでセルを押すと、そのビューのツールバーがアニメーションで画面の外に滑り落ち、ビューコントローラーで押し戻すと、ツールバーバーが元の位置に上向きに滑ります。私の問題は、ビューコントローラーにいるときにホームボタンを押してアプリを終了してから戻ってくるというバグを見つけたことです。アプリは元の場所から再開しますが、テーブル ビューに戻ると、ツールバーが元の位置を超えて上に移動します。終了する前にアプリにいるとき、ツールバーのスライドは正常に機能します。そのため、ツールバーを元の位置にリセットするために何かが呼び出され、さらに上にシフトするために追加の y 軸ポイントが追加されているようです。誰かがそれらの方法が何であるか知っていますか?

コード:

ビューコントローラーのviewWillAppearメソッドにこれがあります:

[UIView animateWithDuration:0.7 animations:^{
        self.navigationController.toolbar.center = CGPointMake(self.navigationController.toolbar.center.x, self.navigationController.toolbar.center.y + self.navigationController.toolbar.frame.size.height);
    } completion:^(BOOL finished){
        self.navigationController.toolbar.hidden = YES;
    }];

同じビューで、それを消す必要があるときに、これをviewWillDisappearに追加しました:

[[self.navigationController toolbar] setHidden:NO];
    [UIView animateWithDuration:1 animations:^{
        self.navigationController.toolbar.center = CGPointMake(self.navigationController.toolbar.center.x, self.navigationController.toolbar.center.y - self.navigationController.toolbar.frame.size.height);
    } completion:^(BOOL finished){
    }];

ツールバーの非表示をアニメーション化する別の方法としてこれを試しましたが、アニメーションはありません:

- (void) viewWillAppear:(BOOL)animated
{
    [self.picker setHidden:YES];


    [self.navigationController setToolbarHidden:YES animated:YES];

}

- (void) viewWillDisappear:(BOOL)animated
{


    [self.navigationController setToolbarHidden:NO animated:YES];


    [self.course setValue:self.nameTextField.text forKey:@"courseName"];
    [self.course setValue:[NSNumber numberWithInt:[self.creditsTextfield.text integerValue]] forKey:@"courseCredits"];
    [self.course setValue:[NSNumber numberWithInt:[self.chaptersTextfield.text integerValue]] forKey:@"courseChapters"];
    [self.course setValue:self.gradeTextfield.text forKey:@"courseGrade"];
}
4

3 に答える 3

0

それを私が直した!viewWillDisappear に次のコード行を追加しました。

 self.navigationController.toolbar.center = CGPointMake(self.navigationController.toolbar.center.x, 458);
    self.navigationController.toolbar.center = CGPointMake(self.navigationController.toolbar.center.x, self.navigationController.toolbar.center.y + self.navigationController.toolbar.frame.size.height);

問題は、アプリがバックグラウンドになってからフォアグラウンドになると、ツールバーが元の位置にリセットされ、テーブルビューに戻った後、ツールバーが元の位置を超えて移動するように見えるためです。したがって、追加した最初の行は、ツールバーを非表示のまま元の位置にリセットしてから下に移動します。その後、アニメーションのブロックが完了します。アニメーションが次のケースで機能するようにこれを行いました。1. ユーザーがテーブル ビューから詳細ビューに入り、アプリを終了せずにテーブル ビューに戻ります。2. ユーザーがテーブル ビューから詳細ビューに入り、アプリを終了してからアプリを再開し、テーブル ビューに戻ります。

于 2013-04-03T23:19:05.407 に答える