Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198
UITabBarController: Difference between revisions - iPhone Development Wiki

UITabBarController: Difference between revisions

From iPhone Development Wiki
No edit summary
(Prettify and categorize.)
Line 7: Line 7:
A reverse-engineered code listing follows:
A reverse-engineered code listing follows:


<code>
<source lang="objc">
    - (void)_setSelectedViewController:(UIViewController *) {
- (void)_setSelectedViewController:(UIViewController *) {
        if (_transientViewController == nil || _transientViewController == controller) return;
    if (_transientViewController == nil || _transientViewController == controller) return;
        if (_selectedViewController == controller) return;
    if (_selectedViewController == controller) return;
       
   
        BOOL moreController = [[[self moreNavigationController] moreViewControllers] containsObject:controller];
    BOOL moreController = [[[self moreNavigationController] moreViewControllers] containsObject:controller];
       
   
        [self _setSelectedTabBarItem:[controller tabBarItem]];
    [self _setSelectedTabBarItem:[controller tabBarItem]];
        [self transitionFromViewController:_selectedViewController toViewController:controller];
    [self transitionFromViewController:_selectedViewController toViewController:controller];
       
   
        if (moreController && [self _allowSelectionWithinMoreList])
    if (moreController && [self _allowSelectionWithinMoreList])
            [[self moreNavigationController] setDisplayedViewController:nil];
        [[self moreNavigationController] setDisplayedViewController:nil];
       
   
        if (__UIApplicationLinkedOnOrAfter(4) && [[self delegate] respondsToSelector:@selector(tabBarController:didSelectViewController)])
    if (__UIApplicationLinkedOnOrAfter(4) && [[self delegate] respondsToSelector:@selector(tabBarController:didSelectViewController)])
            [[self delegate] tabBarController:self didSelectViewController:controller];
        [[self delegate] tabBarController:self didSelectViewController:controller];
    }
}
</code>
</source>
 
{{occlass|library=UIKit.framework|navbox=1}}

Revision as of 06:57, 1 February 2011

UITabBarController is a class used for managing a UITabBar within a UIViewController hierarchy.

-[UITabBarController _setSelectedViewController:]

This method is the main method used for managing selection. It's called, sometimes indirectly, when you tap an item in the tab bar or change the selected controller programatically (even via -setSelectedIndex:). However, popping back to the root controller and similar tasks are handled by other methods.

A reverse-engineered code listing follows:

- (void)_setSelectedViewController:(UIViewController *) {
    if (_transientViewController == nil || _transientViewController == controller) return;
    if (_selectedViewController == controller) return;
    
    BOOL moreController = [[[self moreNavigationController] moreViewControllers] containsObject:controller];
    
    [self _setSelectedTabBarItem:[controller tabBarItem]];
    [self transitionFromViewController:_selectedViewController toViewController:controller];
    
    if (moreController && [self _allowSelectionWithinMoreList])
        [[self moreNavigationController] setDisplayedViewController:nil];
    
    if (__UIApplicationLinkedOnOrAfter(4) && [[self delegate] respondsToSelector:@selector(tabBarController:didSelectViewController)])
        [[self delegate] tabBarController:self didSelectViewController:controller];
}