了解 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) 的选项列在 UITabBarMore 部分中,这将返回一个 BOOL

【讨论】:

【参考方案3】:

您可以继承 UIView 并添加一个属性 sentFrom,当您将其添加到任何控制器中时,您将传递给 UIView。没有一个已经实现的方法可以做到这一点,所以你必须自己跟踪这些事情。

【讨论】:

【参考方案4】:

不,UITabbarController 不会公开该信息。

【讨论】:

以上是关于了解 UIView 是不是是从 UITabBar 的更多菜单中推送的的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 带有布局指南的 UITabBar 上方的 UIView

如何防止使用 UIAppearance 和 UIView 的 tintColor 更改所有 UITabBar 图标颜色?

如何判断 UITabBar 是不是从自定义视图打开?

如何在 iOS 中向 UIView 添加第二个 UITabBar(控制器?)

如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?

如何将 UINavigationController 添加到 UITabBar 应用程序的第一个视图?