我怎样才能find一个特定的UITabBarItem的UIView?
我正在使用名为SwiftyWalkthrough的外部库,该库允许我只在屏幕上公开某些视图,以引导新用户通过我的应用程序的用户界面。 我想要暴露给用户的第一个项目是一个UITabBarItem。 我需要find与特定的UITabBarItem关联的UIView。 我知道该项目的索引,我已经给它一个标签。 但是我还没有find一种方法让他们帮我find这个观点。 当然,我只想用公共接口来实现这一点。
我通过访问tabBar的子视图来解决我的问题。 userInteractionEnabled的视图是UITabBarItems。 通过minX值对它们进行sorting可以确保它们与tabBar.items数组的顺序相同。
extension UITabBarController { func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) } }
斯威夫特的版本为卡尔·史密斯的答案
func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) }
Objective-C在iOS10中testing:
[alert setModalPresentationStyle:UIModalPresentationPopover]; UIView *view = [self.tabBar.selectedItem valueForKey:@"view"]; alert.popoverPresentationController.delegate = self; alert.popoverPresentationController.sourceView = self.tabBar; alert.popoverPresentationController.sourceRect = view.frame; alert.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown; [self presentViewController:alert animated:YES completion:nil];