zoukankan      html  css  js  c++  java
  • iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

    1、RootView 跳到SecondView

    首先我们需要新一个View。新建SecondView,按住Command键然后按N,弹出新建页面,我们新建SecondView

    2、为Button 添加点击事件,实现跳转

    在RootViewController.xib中和RootViewController.h文件建立连接

    在RootViewController.m中实现代码,alloc一个SecondViewController,用pushViewController到navigationController中去,并为

     

    SecondViewController这是title为    secondView.title =@"Second View"; 默认情况下,titie为下个页面返回按钮的名字。

    1. - (IBAction)gotoSecondView:(id)sender {  
    2.     SecondViewController *secondView = [[SecondViewController alloc] init];  
    3.     [self.navigationController pushViewController:secondView animated:YES];  
    4.     secondView.title = @"Second View";  
    5. }  
    - (IBAction)gotoSecondView:(id)sender {
        SecondViewController *secondView = [[SecondViewController alloc] init];
        [self.navigationController pushViewController:secondView animated:YES];
        secondView.title = @"Second View";
    }

    这是点击GotoSecondView 按钮,出现

    这就是SecondView了。

    3、添加segmentedController

    在nav bar这样的效果是如何实现的呢?

    这就是segmentedController。

    3.1在RootViewController.m的viewDidLoad添加如下代码:

     

    1. NSArray *array = [NSArray arrayWithObjects:@"鸡翅",@"排骨", nil];  
    2.    UISegmentedControl *segmentedController = [[UISegmentedControl alloc] initWithItems:array];  
    3.    segmentedController.segmentedControlStyle = UISegmentedControlSegmentCenter;  
    4.   
    5.    [segmentedController addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];  
    6.    self.navigationItem.titleView = segmentedController;  
     NSArray *array = [NSArray arrayWithObjects:@"鸡翅",@"排骨", nil];
        UISegmentedControl *segmentedController = [[UISegmentedControl alloc] initWithItems:array];
        segmentedController.segmentedControlStyle = UISegmentedControlSegmentCenter;
    
        [segmentedController addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
        self.navigationItem.titleView = segmentedController;
    

    3.2[segmentedController addTarget:selfaction:的实现

     

    1. -(void)segmentAction:(id)sender  
    2. {  
    3.     switch ([sender selectedSegmentIndex]) {  
    4.         case 0:  
    5.         {  
    6.             UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了鸡翅" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];  
    7.             [alter show];  
    8.   
    9.         }  
    10.         break;  
    11.     case 1:  
    12.         {  
    13.             UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了排骨" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];  
    14.             [alter show];  
    15.         }  
    16.         break;  
    17.           
    18.         default:  
    19.             break;  
    20.     }  
    21. }  
    -(void)segmentAction:(id)sender
    {
        switch ([sender selectedSegmentIndex]) {
            case 0:
            {
                UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了鸡翅" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                [alter show];
    
            }
            break;
        case 1:
            {
                UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了排骨" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                [alter show];
            }
            break;
            
            default:
                break;
        }
    }

    这样就能响应鸡翅和排骨按钮了

    4、自定义backBarButtonItem

     

    左上角的返回上级View的barButtonitem的名字是上级目录的Title,如果title或者适合做button的名字,怎么办呢?我们可以自己定义

    代码如下:

     

    1. UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"根视图" style:UIBarButtonItemStyleDone target:nil action:nil];  
    2.    self.navigationItem.backBarBu  
     UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"根视图" style:UIBarButtonItemStyleDone target:nil action:nil];
        self.navigationItem.backBarBu

    效果:

    6、自定义title

    UINavigationController的title可以用别view替代,比如用UIButton UILable等,下面我用UIButton.

    在SecondViewController.m中添加下面如下。

     

    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.     UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];  
    5.     [button setTitle: @"自定义title" forState: UIControlStateNormal];  
    6.     [button sizeToFit];  
    7.     self.navigationItem.titleView = button;}  
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
        [button setTitle: @"自定义title" forState: UIControlStateNormal];
        [button sizeToFit];
        self.navigationItem.titleView = button;}

    运行程序,goto secondView,运行效果

    下篇文件讲下Navigation 的Toobar如何显示和如何自己定义。

    http://blog.csdn.net/totogo2010/article/details/7682433

  • 相关阅读:
    flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array
    为什么引入进程20年后,又引入线程?
    As of Flume 1.4.0, Avro is the default RPC protocol.
    Google Protocol Buffer 的使用和原理
    Log4j 2
    统一日志 统一订单
    网站行为跟踪 Website Activity Tracking Log Aggregation 日志聚合 In comparison to log-centric systems like Scribe or Flume
    Percolator
    友盟吴磊:移动大数据平台的架构、实践与数据增值
    Twitter的RPC框架Finagle简介
  • 原文地址:https://www.cnblogs.com/geek6/p/3872119.html
Copyright © 2011-2022 走看看