0

我在隐藏导航栏的视图上执行带有导航栏的转场,当转场开始时,我当前的视图似乎被未隐藏在我的转场中的导航栏推下......这看起来很糟糕......

如果我删除该setNavigationBarHidden:animated方法,我在执行 segue 后看不到导航栏,并且问题不再出现。

- (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

如果要隐藏导航栏,则必须在根控制器中进行,即应用程序中的第一个控制器。我的猜测是,您已经在界面构建器中设置了从某个按钮到以下视图的模态序列。通过这样做,您可以从下到上滑动以下视图。我还猜测您正在使用最新的 xcode 版本 [4.5.2] 并在 ios6 上运行它。

尝试从界面生成器中删除您的 segue。此外,而不是你的:

[self performSegueWithIdentifier:@"mailSignUp" sender:nil];

利用:

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

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

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

[将 YourSecondController 替换为 mailSignUp 或您想要执行 segue 的任何控制器]

此外,如果要隐藏导航栏,则必须在根控制器的 (void)viewdidload 方法中添加这行代码。

如果你像这样以编程方式运行你的 segue,你应该实现从右到左的第二个视图幻灯片。如果这不充分或不准确,请告诉我这是否有帮助或提供更多信息。

于 2012-12-19T22:08:14.427 回答