了解 UIView 是不是是从 UITabBar 的更多菜单中推送的
Posted
技术标签:
【中文标题】了解 UIView 是不是是从 UITabBar 的更多菜单中推送的【英文标题】:Knowing if UIView was pushed from the More menu of a UITabBar了解 UIView 是否是从 UITabBar 的更多菜单中推送的 【发布时间】:2012-11-17 17:04:18 【问题描述】:有没有一种方法可以知道用户何时从 UITabbar 的更多视图推送了 UIView?
我在 UITabBar 中有多个视图,其中一些最终出现在列出它们的更多视图中。我希望能够知道何时从更多视图推送视图,而不是何时从 UITabBarItem 推送视图
谢谢!
【问题讨论】:
【参考方案1】:您可以只检查控制器的导航控制器是否是更多导航控制器:
-(void)viewDidLoad
[super viewDidLoad];
if (self.navigationController == self.tabBarController.moreNavigationController)
NSLog(@"Launcehed from more");
else
NSLog(@"Launcehed from tab bar");
【讨论】:
【参考方案2】:您的问题是UITabBar
,但我怀疑您的意思是UITabBarController
。根据UITabBarController
自动提供的某些选项“最终出现在更多视图中”的方式。
如果您的意思是UITabBarController
,那么由UITabBarController
提供的UIViewController
可以很容易地确定它是否在更多选项中。
[self.tabBarController.moreNavigationController.viewControllers containsObject:self];
如果该视图控制器 (self
) 的选项列在 UITabBar
的 More
部分中,这将返回一个 BOOL
。
【讨论】:
【参考方案3】:您可以继承 UIView 并添加一个属性 sentFrom
,当您将其添加到任何控制器中时,您将传递给 UIView。没有一个已经实现的方法可以做到这一点,所以你必须自己跟踪这些事情。
【讨论】:
【参考方案4】:不,UITabbarController
不会公开该信息。
【讨论】:
以上是关于了解 UIView 是不是是从 UITabBar 的更多菜单中推送的的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 带有布局指南的 UITabBar 上方的 UIView
如何防止使用 UIAppearance 和 UIView 的 tintColor 更改所有 UITabBar 图标颜色?
如何在 iOS 中向 UIView 添加第二个 UITabBar(控制器?)