UINavigationController

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UINavigationController相关的知识,希望对你有一定的参考价值。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    
    //导航视图控制器也是一个视图控制器,TA管理了多个子视图控制器,是系统提供给我们的容器视图控制器。
    //导航视图控制器至少管理一个子视图控制器,这个视图控制器称为导航视图控制器的根视图控制器
    //如果我们的程序想要采用导航视图控制器进行布局,我们需要指定window的根视图控制器为导航视图控制器
    
    RootViewController *rootVC = [[RootViewController alloc] init];
    UINavigationController *naVC = [[UINavigationController alloc] initWithRootViewController:rootVC];
    
    //设置导航栏的显隐属性
    naVC.navigationBarHidden = NO;
    self.window.rootViewController = naVC;
    
    //设置导航栏样式
    naVC.navigationBar.barStyle = UIBarStyleDefault;
    
    //设置导航条的背景颜色
    naVC.navigationBar.backgroundColor = [UIColor greenColor];
    
    //设置导航栏颜色
    naVC.navigationBar.barTintColor = [UIColor greenColor];
    
    //设置导航栏元素颜色
    naVC.navigationBar.tintColor = [UIColor yellowColor];
    
    [rootVC release];
    [naVC release];
    
    
    [self.window makeKeyAndVisible];
    return YES;
}
@implementation RootViewController

- (void)leftAction {
    self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1.0];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    //每一个加到导航视图控制器内部的视图控制器自带一个属性叫navigationItem,可以配置当前页面导航条的显示内容,比如左、右按钮,标题等
    self.navigationItem.title = @"中二洪荒";
    
    //创建左按钮
    /* 1 显示标题
    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@"巴达" style:UIBarButtonItemStylePlain target:self action:@selector(leftAction)];*/
    
    /* 2 使用系统自带图标样式
    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(leftAction)];*/
    
    /* 3 使用自定义图片显示
    UIImage *image = [UIImage imageNamed:@"dianhua"];
    
    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector(leftAction)];

    //指定左按钮
    self.navigationItem.leftBarButtonItem = left;*/
    
//     4 使用自定义视图显示
    
    UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    [self.view addSubview:mySwitch];
//
//    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithCustomView:mySwitch];
//    self.navigationItem.leftBarButtonItem = left;
//    
//    [mySwitch release];
//    [left release];
    
    //设置左、右按钮显示多个
    UIBarButtonItem *first = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add)];
    UIBarButtonItem *second = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(bookmark)];
    self.navigationItem.rightBarButtonItems = @[first, second];
    [first release];
    [second release];
    
    //设置导航条上的标题视图
    UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"中二洪荒", @"洪荒中二"]];
    seg.selectedSegmentIndex = 0;
//    seg.momentary = YES;
    self.navigationItem.titleView = seg;
    [seg release];
    
    // 导航栏半透明效果(ios7以后 默认为YES)
    // 当半透明效果开启时 屏幕左上角为坐标原点
    // 关闭时 导航栏左下角为坐标原点
    self.navigationController.navigationBar.translucent = NO;
    
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(125, 100, 100, 100)];
    view.tag = 101;
    view.backgroundColor = [UIColor blackColor];
    [self.view addSubview:view];
    [view release];
    
    UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(100, 300, 100, 40)];
    stepper.minimumValue = 1;
    stepper.maximumValue = 5;
    stepper.stepValue = 1;
    [stepper addTarget:self action:@selector(step:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:stepper];
    [stepper release];
    
    
    
    
    
    // Do any additional setup after loading the view.
}

- (void)step:(UIStepper *)stepper {
    UIView *view = [self.view viewWithTag:101];
    
//    UIAlertView
//    UIActionSheet
//    UIAlertController
    
//    UIDatePicker
//    UIPickerView
    
    view.bounds = CGRectMake(0, 0, 100 + 50 * stepper.value, 100 + 50 * stepper.value);
}

- (void)add {
    NSLog(@"左边添加");
}
- (void)bookmark {
    NSLog(@"右边添加");
}


以上是关于UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章

IOS 两种控制器的使用,纯代码UITabBarController 与 UINavigationController

UISearchBar、UITableViewController 和 UINavigationController,在执行本机代码时得到一个 SIGSEGV

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

UINavigationController 风格

如何过渡出父 UINavigationController

UINavigationController 疯了吗?