使用可见导航栏执行segue时,视图会被推下

时间:2012-12-19 21:38:03

标签: objective-c ios uinavigationbar uistoryboard

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

如果删除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];
    }
}

1 个答案:

答案 0 :(得分:0)

如果要隐藏导航栏,则必须在根控制器(应用程序中的第一个控制器)中执行此操作。 我的猜测是你已经在界面构建器中从某个按钮设置了一个模态segue到下面的视图。通过这样做,您可以从下到上滑动以下视图。 我也猜测你正在使用最新的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];

[使用mailSignUp取代YourSecondController或任何你想要执行的控制器]

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

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