我怎样才能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];