Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 导航控制器干扰TabBar控制器_Ios_Swift_Uinavigationcontroller_Uitabbarcontroller_Segue - Fatal编程技术网

Ios 导航控制器干扰TabBar控制器

Ios 导航控制器干扰TabBar控制器,ios,swift,uinavigationcontroller,uitabbarcontroller,segue,Ios,Swift,Uinavigationcontroller,Uitabbarcontroller,Segue,我有一个菜单,它只是选项卡上的一个表视图。当您选择其中一个表格单元格时,它会与嵌入在导航控制器中的viewcontroller分离。我在这个导航控制器上添加了一个“完成”按钮,并创建了一个返回菜单的序列。但是,现在菜单没有显示选项卡栏,而是显示一个带有“后退”按钮的导航栏 这是菜单(选项卡栏的一部分),只是一个表视图 这是单击tableview单元格时显示的页面 这是单击“完成”后的菜单 单击“完成”时,我希望它返回到菜单,如第一个屏幕截图所示。我试图使用界面生成器来完成此操作,但我想我可

我有一个菜单,它只是选项卡上的一个表视图。当您选择其中一个表格单元格时,它会与嵌入在导航控制器中的viewcontroller分离。我在这个导航控制器上添加了一个“完成”按钮,并创建了一个返回菜单的序列。但是,现在菜单没有显示选项卡栏,而是显示一个带有“后退”按钮的导航栏

这是菜单(选项卡栏的一部分),只是一个表视图

这是单击tableview单元格时显示的页面

这是单击“完成”后的菜单

单击“完成”时,我希望它返回到菜单,如第一个屏幕截图所示。我试图使用界面生成器来完成此操作,但我想我可以创建一个类并通过代码返回菜单

有没有办法解决这个问题

-----编辑-----

这是没有“完成”按钮的支持页面

------编辑-----

这是流程布局,对不起,在小屏幕笔记本电脑atm上工作很麻烦

您应该使用“显示(如推送)”序列而不是“推送”序列。这允许它在堆栈中正确显示自己

使用“推送”要求现有屏幕存在于导航控制器中,而在第一次加载时它不会出现。通过使用“推送”,它将控制器移动到导航控制器堆栈中,在按下“完成”后,导航栏将留给您

通过使用“显示(例如推送)”选项,系统将根据当前视图层次结构选择使用模式演示或导航控制器推送

显示(例如推送):

注意:如果使用模型演示文稿显示视图,则需要使用

[self dismissViewControllerAnimated:YES completion:nil]; 
而不是

[self.navigationController popViewControllerAnimated:YES]; 
您可以进行快速检查以选择正确的方法:

if (self.navigationController) {
    [self.navigationController popViewControllerAnimated:YES];
}
else {
    [self dismissViewControllerAnimated:YES completion:nil];
}
这将允许您以多种方式显示屏幕,而无需进行任何额外检查。您应该使用“显示(如推)”序列而不是“推”。这将允许它在堆栈中正确显示自己

使用“推送”要求现有屏幕存在于导航控制器中,而在第一次加载时它不会出现。通过使用“推送”,它将控制器移动到导航控制器堆栈中,在按下“完成”后,导航栏将留给您

通过使用“显示(例如推送)”选项,系统将根据当前视图层次结构选择使用模式演示或导航控制器推送

显示(例如推送):

注意:如果使用模型演示文稿显示视图,则需要使用

[self dismissViewControllerAnimated:YES completion:nil]; 
而不是

[self.navigationController popViewControllerAnimated:YES]; 
您可以进行快速检查以选择正确的方法:

if (self.navigationController) {
    [self.navigationController popViewControllerAnimated:YES];
}
else {
    [self dismissViewControllerAnimated:YES completion:nil];
}

这将允许您以多种方式显示屏幕,而无需进行任何其他检查

我刚刚意识到您的菜单选项卡上没有导航栏。您需要做的只是嵌入导航控制器。如果它不起作用,请告诉我


选中“按下时隐藏底部栏”

我刚刚意识到您的菜单选项卡上没有导航栏。您需要做的就是嵌入导航控制器。如果它不起作用,请告诉我



选中“按下按钮时隐藏底部栏”“

要显示支持页面,您是使用pushviewcontroller还是presentviewcontroller来显示它?我使用的是push Segue如果您没有设置“完成”按钮,您是否看到“后退”按钮?你看到导航栏了吗?我可以看到导航控制器,但没有默认的后退按钮,我在主要问题的底部添加了一个屏幕截图。删除右下角的导航控制器,它不需要,因为它已经在导航控制器堆栈中,用于显示支持页面,您是使用pushviewcontroller还是presentviewcontroller显示它?我使用的是push Segue如果您没有设置“完成”按钮,您是否看到“后退”按钮?你看到导航栏了吗?我可以看到导航控制器,但没有默认的后退按钮,我在主要问题的底部添加了一个屏幕截图。删除右下角的导航控制器,它不是必需的,因为它已经在导航控制器堆栈中了。啊,你的措辞让我觉得你在使用不推荐的“推”选项:)我从编辑中了解到您的评论的意思。我已经通过您的编辑和一些额外的重写调整了我的答案注:如果您的视图是使用模型演示文稿显示的,则需要使用
[自我解除视图控制器激活:是完成:无]和非
[self.navigationController popViewControllerAnimated:YES]啊,你的措辞让我觉得你在使用不推荐的“推送”选项:)我从你的编辑中得到了你评论的意思。我已经通过您的编辑和一些额外的重写调整了我的答案注:如果您的视图是使用模型演示文稿显示的,则需要使用
[自我解除视图控制器激活:是完成:无]和非
[self.navigationController popViewControllerAnimated:YES]它不会在导航栏上显示“后退”按钮,但在点击“完成”按钮时,我也看不到选项卡栏请在调用“支持”页面时显示代码,以及“完成”按钮的代码。所有这些都已在interface builder中完成。tableview是静态的,从cell到导航控制器是连续的。我会在原始问题中添加布局的屏幕截图现在我知道为什么了。。。。删除tableview和支持页面之间的uinavigationcontroller。直接从TABLEVIEW(而不是TABLEVIEWCELL)连接到支持页面。选择要隐藏选项卡栏的视图控制器,然后选择“按下时隐藏底部栏”。它添加了tabBarHidden属性(以isTabBarHidden作为其getter)和-(void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated方法它不会在导航栏上显示back按钮,但在点击“完成”按钮时我也看不到选项卡栏请在调用Support Pa时显示代码