• IOS 入门开发之创建标题栏UINavigationBar的使用(二)


    IOS 入门开发之创建标题栏UINavigationBar的使用

     http://xys289187120.blog.51cto.com/3361352/685746

        IOS 开发有关界面的东西不仅可以使用代码来编写,也可以使用Interface Builder可视化工具来编写。今天有个朋友问我这两个有什么区别,首先说 说IB ,使用它编辑出来的控件其实底层还是调用代码只是苹果封装出来让开发者更好使用而已。它的优点是方便、快捷最重要的是安全,因为控件的释放它会帮我们完成 不用手动释放。缺点是多人开发不好维护,就好比谁写的IB谁能看懂,别人看的话就比较费劲,不利于代码的维护。两种方式各有利弊,不过我个人还是比较喜欢 纯代码,因为任何程序语言,或者任何脚本语言,代码和可视化工具比起来永远是最底层的。





    利用代码在屏幕中添加一个标题栏,并且在标题栏左右两方在添加两个按钮,点击后响应这两个按钮。
    这里设置标题栏的显示范围。

    1. //创建一个导航栏 
    2. UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];  


      有了标题栏后,须要在标题栏上添加一个集合Item用来放置 标题内容,按钮等。

    1. //创建一个导航栏集合 
    2. UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];  

    在这个集合Item中添加标题,按钮。

    style:设置按钮的风格,一共有3中选择。
    action:@selector:设置按钮点击事件。

    1. //创建一个左边按钮 
    2.   UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边"    
    3.                                                             style:UIBarButtonItemStyleBordered    
    4.                                                             target:self    
    5.                                                             action:@selector(clickLeftButton)];   
    6.  
    7.   //创建一个右边按钮 
    8.   UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"    
    9.                                                                 style:UIBarButtonItemStyleDone    
    10.                                                                 target:self    
    11.                                                                 action:@selector(clickRightButton)];   
    12.   //设置导航栏内容 
    13.   [navigationItem setTitle:@"雨松MOMO程序世界"]; 



    将标题栏中的内容全部添加到主视图当中。

    1. //把导航栏添加到视图中 
    2. [self.view addSubview:navigationBar];   



    最后将控件在内存中释放掉,避免内存泄漏。

    1. //释放对象 
    2. [navigationItem release];   
    3. [leftButton release];   
    4. [rightButton release]; 





    如图所示:添加这两个按钮的点击响应事件。

    1. -(void)clickLeftButton 
    2.      
    3.     [self showDialog:@"点击了导航栏左边按钮"]; 
    4.    
    5.  
    6.  
    7. -(void)clickRightButton 
    8.      
    9.     [self showDialog:@"点击了导航栏右边按钮"]; 
    10.      




    点击后打开一个Dialog对话框,根据点击不同的按钮传入不同的显示内容。
     

    1. -(void)showDialog:(NSString *) str 
    2.     
    3.     UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"这是一个对话框" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];     
    4.     
    5.     [alert show];       
    6.     [alert release]; 




    最后贴上完整的代码

      1. #import "TitleViewController.h" 
      2.  
      3. @implementation TitleViewController 
      4.  
      5. - (void)didReceiveMemoryWarning 
      6.     // Releases the view if it doesn't have a superview. 
      7.     [super didReceiveMemoryWarning]; 
      8.      
      9.     // Release any cached data, images, etc that aren't in use. 
      10.  
      11. #pragma mark - View lifecycle 
      12.  
      13.  
      14. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
      15. - (void)viewDidLoad 
      16.     [super viewDidLoad]; 
      17.  
      18.  
      19.     //创建一个导航栏 
      20.     UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];   
      21.      
      22.     //创建一个导航栏集合 
      23.     UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];   
      24.      
      25.     //创建一个左边按钮 
      26.     UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边"    
      27.                                                               style:UIBarButtonItemStyleBordered    
      28.                                                               target:self    
      29.                                                               action:@selector(clickLeftButton)];   
      30.  
      31.     //创建一个右边按钮 
      32.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"    
      33.                                                                   style:UIBarButtonItemStyleDone    
      34.                                                                   target:self    
      35.                                                                   action:@selector(clickRightButton)];   
      36.     //设置导航栏内容 
      37.     [navigationItem setTitle:@"雨松MOMO程序世界"]; 
      38.      
      39.      
      40.     //把导航栏集合添加入导航栏中,设置动画关闭 
      41.     [navigationBar pushNavigationItem:navigationItem animated:NO];  
      42.      
      43.     //把左右两个按钮添加入导航栏集合中 
      44.     [navigationItem setLeftBarButtonItem:leftButton];  
      45.     [navigationItem setRightBarButtonItem:rightButton]; 
      46.       
      47.     //把导航栏添加到视图中 
      48.     [self.view addSubview:navigationBar];   
      49.      
      50.      
      51.     //释放对象 
      52.     [navigationItem release];   
      53.     [leftButton release];   
      54.     [rightButton release]; 
      55.  
      56.  
      57.  
      58. -(void)clickLeftButton 
      59.      
      60.     [self showDialog:@"点击了导航栏左边按钮"]; 
      61.    
      62.  
      63.  
      64. -(void)clickRightButton 
      65.      
      66.     [self showDialog:@"点击了导航栏右边按钮"]; 
      67.      
      68.  
      69.  
      70. -(void)showDialog:(NSString *) str 
      71.     
      72.     UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"这是一个对话框" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];     
      73.     
      74.     [alert show];       
      75.     [alert release]; 
      76.  
      77. - (void)viewDidUnload 
      78.     [super viewDidUnload]; 
      79.     // Release any retained subviews of the main view. 
      80.     // e.g. self.myOutlet = nil; 
      81.  
      82. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
      83.     // Return YES for supported orientations 
      84.     return (interfaceOrientation == UIInterfaceOrientationPortrait); 
      85.  
      86. @end 
  • 相关阅读:
    消息循环中的TranslateMessage函数和DispatchMessage函数,特别注意WM_TIMER消息
    单线程程序处理消息的方式!
    PeekMessage&GetMessage
    GetTickCount() 函数的作用和用法
    LPVOID 没有类型的指针
    sprintf详解
    memset用法详解
    C语言中%d,%o,%f,%e,%x的意义
    VS2013 C++ 动态链接库的生成
    visual studio 2013的C++开发环境不错--vs2013安装试用手记
  • 原文地址:https://www.cnblogs.com/apem/p/4025633.html
Copyright © 2020-2023  润新知