Swiftgram/Source/ASTabBarController.m
Garrett Moon 8013e25524 Update license v2 (#67)
* Fixed license

* Update all licenses

* Update Dangerfile for new license

* Update already updated licenses

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…

* Closer…
2017-04-24 16:59:57 -07:00

86 lines
2.5 KiB
Objective-C

//
// ASTabBarController.m
// Texture
//
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the /ASDK-Licenses directory of this source tree. An additional
// grant of patent rights can be found in the PATENTS file in the same directory.
//
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
#import <AsyncDisplayKit/ASTabBarController.h>
@implementation ASTabBarController
{
BOOL _parentManagesVisibilityDepth;
NSInteger _visibilityDepth;
}
ASVisibilityDidMoveToParentViewController;
ASVisibilityViewWillAppear;
ASVisibilityViewDidDisappearImplementation;
ASVisibilitySetVisibilityDepth;
ASVisibilityDepthImplementation;
- (void)visibilityDepthDidChange
{
for (UIViewController *viewController in self.viewControllers) {
if ([viewController conformsToProtocol:@protocol(ASVisibilityDepth)]) {
[(id <ASVisibilityDepth>)viewController visibilityDepthDidChange];
}
}
}
- (NSInteger)visibilityDepthOfChildViewController:(UIViewController *)childViewController
{
NSUInteger viewControllerIndex = [self.viewControllers indexOfObjectIdenticalTo:childViewController];
if (viewControllerIndex == NSNotFound) {
//If childViewController is not actually a child, return NSNotFound which is also a really large number.
return NSNotFound;
}
if (self.selectedViewController == childViewController) {
return [self visibilityDepth];
}
return [self visibilityDepth] + 1;
}
#pragma mark - UIKit overrides
- (void)setViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers
{
[super setViewControllers:viewControllers];
[self visibilityDepthDidChange];
}
- (void)setViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers animated:(BOOL)animated
{
[super setViewControllers:viewControllers animated:animated];
[self visibilityDepthDidChange];
}
- (void)setSelectedIndex:(NSUInteger)selectedIndex
{
[super setSelectedIndex:selectedIndex];
[self visibilityDepthDidChange];
}
- (void)setSelectedViewController:(__kindof UIViewController *)selectedViewController
{
[super setSelectedViewController:selectedViewController];
[self visibilityDepthDidChange];
}
@end