我是iPhone开发的新手。我使用故事板创建了一个使用导航栏的应用。我的问题是我在按钮点击时从viewA以编程方式打开 viewB 并成功。现在回到 viewA 我使用了取消按钮。当我点击取消按钮(上一个)时,( viewA )打开但导航栏未显示。和viewA有导航栏控件但 viewB 没有。
提前致谢
查看A
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
EditViewController *viewController = (EditViewController *)[storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];
[self presentViewController:viewController animated:NO completion:NULL];
查看B:
- (IBAction)cancelButtonPressed:(id)sender {
if ( lables != NULL) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ScannerViewController *viewController = (ScannerViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ScannerViewController"];
[self presentViewController:viewController animated:NO completion:NULL];
}
else{
[self.navigationController popViewControllerAnimated:YES];
}
答案 0 :(得分:5)
您正在展示viewB&使用self.navigationController
弹出它,你应该使用一种方法,使用presentviewcontroller& dismissviewcontroller。
[self dismissViewControllerAnimated:YES completion:nil];
对于您的方案,最好使用UINavigationController
e.g
<强>推强>
[self.navigationController pushViewController:viewController animated:YES];
<强>合强>
[self.navigationController popViewControllerAnimated:YES];
答案 1 :(得分:0)
你必须使用导航控制器,在你的StoryBoard中选择你的视图A,编辑菜单&gt;嵌入&gt;导航控制器。
答案 2 :(得分:0)
如果您使用的是storyboard,则无需以编程方式显示viewController。按住ctrl,从viewCA
拖动到viewCB
,然后从弹出菜单中选择模型。
解雇viewController
[self dismissViewControllerAnimated:YES completion:nil];
如果要向viewCB发送任何数据,请给出segue标识符(例如“segid”)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"segid"])
{
//write your code here.
}
}
在展示(推送)delegate
时会自动调用此方法(viewController
)。
答案 3 :(得分:0)
我也遇到了同样的问题。解决方案是永远不要在后退按钮上单击时选择模态,因为模态覆盖了整个视图,这就是为什么在后面的屏幕上导航控制器没有显示。因此,不要为后退按钮建立连接,只需编写后退按钮的代码。
[self dismissViewControllerAnimated:YES completion:nil];
答案 4 :(得分:-1)
当您需要(例如viewDidAppear方法)时,使用
[self.navigationController setNavigationBarHidden:NO animated:YES];