0

我正在尝试以编程方式切换选项卡并确保在切换时将相应的导航控制器弹出到根视图控制器。是否有在手动或以编程方式切换标签栏时调用的方法?

注意: -(void)tabBarController:didSelectViewController:仅在手动切换标签栏时调用

4

2 回答 2

1

您也可以尝试以编程方式调用 didSelectViewController。在这里查看巴比迪的答案:

如何以编程方式触发方法“tabBarController:didSelectViewController:”?

于 2012-08-21T18:52:24.777 回答
0

FWIW,另一种方法是在 selectedViewController 上使用观察者。

// Add Observer
// Note: tabBarController.selectedIndex is not observed as it does not call observeValueForKeyPath on manual switch
[self.tabBarController addObserver:self forKeyPath:@"selectedViewController" options:NSKeyValueObservingOptionNew context:@"changedTabbarIndex"];

// Method for Handling Observations
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSString *action = (__bridge NSString*)context;
    if([action isEqualToString:@"changedTabbarIndex"])
    {
        // Stuff to do on selected Tab changed
    }
}

// Change selectedViewController
[self.tabBarController setSelectedViewController:[[self.tabBarController viewControllers] objectAtIndex:kSomeTab]];

更多信息: 当我触摸标签栏项目时,我没有收到任何通知

于 2012-08-21T19:52:07.493 回答