【发布时间】:2011-01-03 18:15:16
【问题描述】:
我正试图弄清楚如何捕捉控制
UITabBarController。我怎么能做到这一点?
【问题讨论】:
标签: iphone iphone-sdk-3.0 uitabbarcontroller
我正试图弄清楚如何捕捉控制
UITabBarController。我怎么能做到这一点?
【问题讨论】:
标签: iphone iphone-sdk-3.0 uitabbarcontroller
看看UITabBarControllerDelegate下面的方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
告诉代理用户 在标签栏中选择了一个项目。
【讨论】:
UITabBarControllerDelegate 是您要查找的内容吗,尤其是 -tabBarController:didSelectViewController:?
【讨论】:
实现UITabBarControllerDelegate 例如在您的应用委托的applicationDidFinishLaunching
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
tabBarController.delegate = self;
[window addSubview:tabBarController.view];
}
然后实现:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
第一个方法在视图切换之前调用,让您有机会通过返回 NO 来“否决”视图切换
第二个方法在视图切换发生后调用
【讨论】:
如果您使用故事板,请执行此操作
在 didFinishLaunchingWithOptions 中
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];
同样在 AppDelegate 中,保留<UITabBarControllerDelegate>
然后
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//Write your code here
}
【讨论】:
迟到总比没有好。在 swift 4 的情况下,您可以通过以下方式进行操作。
tabBarViewController.delegate = self
并在您的班级中实施UITabBarDelegate。
您将在
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
//Stuff to do
}
【讨论】: