0

ナビゲーション バーが非表示になっているビューでナビゲーション バーを使用してセグエを実行しています。セグエが開始されると、現在のビューが、セグエで非表示になっていないナビゲーション バーによって押し下げられたように見えます…これは見た目が悪いです…

メソッドを削除するsetNavigationBarHidden:animatedと、セグエを実行した後にナビゲーション バーが表示されなくなり、問題が発生しなくなります。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.navigationController setNavigationBarHidden:NO animated:YES];

    if (indexPath.row == 0) {
        [self performSegueWithIdentifier:@"mailSignUp" sender:nil];
    } else if (indexPath.row == 1) {
        [self performSegueWithIdentifier:@"logIn" sender:nil];
    }
}
4

1 に答える 1

0

ナビゲーション バーを非表示にする場合は、アプリの最初のコントローラーであるルート コントローラーで行う必要があります。私の推測では、Interface Builder で特定のボタンから次のビューへのモーダル セグエをセットアップしたと思います。そうすることで、次のビューが下から上にスライドインします。また、最新の xcode バージョン [4.5.2] を使用しており、ios6 で実行していると思います。

インターフェイス ビルダーからセグエを削除してみてください。また、あなたの代わりに:

[self performSegueWithIdentifier:@"mailSignUp" 送信者:nil];

使用する:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

YourSecondController *secondController = (YourSecondController *)[storyBoard instantiateViewControllerWithIdentifier:@"YourSecondController"];

[self.navigationController pushViewController:yourSecondController animated:YES];

[YourSecondController を mailSignUp またはセグエを実行する任意のコントローラーに置き換えます]

また、ナビゲーション バーを非表示にする場合は、ルート コントローラーの (void)viewdidload メソッドにこのコード行を追加する必要があります。

このようにプログラムでセグエを実行すると、右から左への 2 番目のビュー スライドが実現するはずです。これが役に立ったかどうかをお知らせください。また、十分でない場合や正確でない場合は、詳細情報を提供してください。

于 2012-12-19T22:08:14.427 に答える