zoukankan      html  css  js  c++  java
  • UINavigationController与UITabBarController相关问题

    UINavigationController与UITabBarController相关问题

    UINavigationController与UITabBarController混用是非常常见的,有时候会遇到UINavigationController推出(push)出controller后隐藏UITabBarController的问题,很容易对吧.

    源码如下:

    //
    //  AppDelegate.m
    //  NavigationController
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "RootViewController.h"
    
    #define CreateNavigationControllerWith(controller) 
    [[UINavigationController alloc] initWithRootViewController:controller]
    
    @implementation AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
        // 初始化导航栏控制器
        UINavigationController *newProductNC  = 
            CreateNavigationControllerWith([RootViewController new]);
        
        // 初始化TabBarController
        UITabBarController *rootBC = [[UITabBarController alloc] init];
        rootBC.viewControllers = @[newProductNC];
        
        // 交给系统管理
        self.window.rootViewController = rootBC;
        
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
    
    @end
    //
    //  RootViewController.m
    //  NavigationController
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "RootViewController.h"
    #import "SecondViewController.h"
    
    @interface RootViewController ()
    
    @end
    
    @implementation RootViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self)
        {
            self.title = @"YouXianMing";
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        // 设定背景色
        self.view.backgroundColor = [UIColor whiteColor];
    
        // 点击手势
        UITapGestureRecognizer *tapGesture = 
            [[UITapGestureRecognizer alloc] initWithTarget:self
                                                    action:@selector(tapEvent:)];
        
        // 添加手势
        [self.view addGestureRecognizer:tapGesture];
    }
    
    - (void)tapEvent:(UIGestureRecognizer *)sender
    {
        [self.navigationController pushViewController:[SecondViewController new]
                                             animated:YES];
    }
    
    @end
    //
    //  SecondViewController.m
    //  NavigationController
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "SecondViewController.h"
    
    @interface SecondViewController ()
    
    @end
    
    @implementation SecondViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self)
        {
    
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor whiteColor];
    }
    
    @end

    效果:

    将RootViewController.m中tapEvent:修改一下,如下所示:

    效果(注意看底部的隐藏效果哦):

    注意:隐藏与取消隐藏是成对出现的.

    附录:

    -修改系统颜色样式-

    http://stackoverflow.com/questions/19504291/changing-the-tint-color-of-uibarbuttonitem

  • 相关阅读:
    react 起手式
    获取元素CSS值之getComputedStyle方法熟悉
    js设计模式
    es6笔记5^_^set、map、iterator
    Flux --> Redux --> Redux React 入门 基础实例使用
    http协议与内容压缩
    C程序中唯一序列号的生成
    动态设置布局LayoutInflater
    构造Scala开发环境并创建ApiDemos演示样例项目
    BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3756904.html
Copyright © 2011-2022 走看看