在 navcontroller 中的 tabbarcontroller 上方显示 top viewcontroller
Posted
技术标签:
【中文标题】在 navcontroller 中的 tabbarcontroller 上方显示 top viewcontroller【英文标题】:present top viewcontroller above tabbarcontroller within navcontroller 【发布时间】:2014-07-07 13:00:52 【问题描述】:我有一个关于视图控制器堆叠的设置问题。 我有一个带有标签栏控制器的应用程序。每个选项卡页面都需要一个导航栏,由每个选项卡和内容中的导航控制器提供。那里没问题。 但是,我需要在选项卡上方的选项卡上方显示一个视图控制器。 我不能在 tabbarcontroller(它不是 navcon)上显示 viewcontroler,而且我不能在 tabcon 内使用 navcon,因为选项卡会位于顶部。
所以我把一个 navcon 作为主容器,我把 tabbarcon 放在里面。 现在要呈现的 viewcon 位于所有内容之上,但唯一剩下的问题是,主容器 navcon 的导航栏覆盖了 tabbarcon 的 navcon 内的导航栏,我需要最顶部的 viewcon 上的标题,它位于所有内容之上。
除了在所有内容之上显示视图控制器时打开和关闭主容器 navcon 的导航栏之外,有没有人为此提供更巧妙的解决方案?
【问题讨论】:
【参考方案1】:我在 AppDelegate 中定义了一个属性
@property (strong, nonatomic) UINavigationController* rootNavController;
我可以使用像
这样的委托对象方法在 TabBar 上呈现一个 viewController self.navController = nil;
LGLoginViewController* loginView = [[LGLoginViewController alloc] initWithNibName:@"LGLoginViewController"bundle:nil];
if (!self.navController)
self.navController = [[UINavigationController alloc] initWithRootViewController:loginView];
else
[self.navController initWithRootViewController:loginView];
self.navController.delegate = self;
[self.window.rootViewController presentModalViewController:self.navController animated:NO];
后来我解散了控制器
【讨论】:
是的,这与我的设置相似,如果不一样的话。但是,它并没有提供更智能的解决方案来解决两件事:1)能够在 tabbarcon 顶部显示带有导航栏的 viewcon 2)不让导航栏覆盖 tabbarcon 内的 navcon 导航栏。您的解决方案是 1),但没有解释 2) 我认为 presentModalViewController 从 ios7 开始也已经过时了 我认为你的第二点对我来说没有意义,你为什么需要那种设置? Retro: 主导航栏的导航栏覆盖了导航栏的导航栏和 tabbarcon。这显然是个问题。哪一部分没有意义? 如果您想要执行任何操作,然后从您呈现的 modelViewController 中,您可以使用导航按钮创建相同的标题。以上是关于在 navcontroller 中的 tabbarcontroller 上方显示 top viewcontroller的主要内容,如果未能解决你的问题,请参考以下文章
在 navcontroller 中的 tabbarcontroller 上方显示 top viewcontroller
NavController 中的滚动视图在显示键盘后不会重置(Swift)
从 TableViewController 到嵌入在 NavController 中的第二个 TVC 的 performSegueWithIdentifier 不起作用
如何摆脱 Android-Kotlin 中的 `Unresolved reference: NavController` 错误?