`
R任轩
  • 浏览: 15895 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

UINavigationController

 
阅读更多

导航控制器UINavigationController控制一系列的UIViewController,他们组成一个层次结构,每一个ViewController都在这个层次结构中上下移动,组织方式是栈形式。

每个UIViewController都有相关联的UINavigationItem,后者处于活动状态时将位于UINavigationBar中,每个UINavigationItem都可能包含一个或多个UIBarButtonItem,让导航栏能包括其他操作项。

一般情况下,导航控制器结构包含四个对象:

一个UINavigationController;

一个UINavigationBar;

一个UIViewController;

一个UINavigationItem(放在UINavigationBar中)

下面来创建一个导航控制器:

首先建立一个Empty project,在AppDelegate.h中声明并在m文件中实现:

@property (strong,nonatomic)UINavigationController *navController;

 

然后建一个RootViewController继承UITableViewController作为导航控制器的根视图

 

然后建立MovieViewController来作为RootViewController条目的子视图

 

在RootViewController里面添加方法:

(void)viewDidLoad  
{  
    [superviewDidLoad];  
    self.title = @"类别";  
    NSMutableArray *array = [[NSMutableArrayalloc]init];  
      
    MovieController *movieController = [[MovieControlleralloc]initWithStyle:UITableViewStylePlain];  
    movieController.title = @"电影";  
    [array addObject:movieController];  
      
    self.controllerList = array;  

 由于继承了UITableViewController,所以要实现必要的方法,这里列出关键代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    staticNSString *CellIdentifier = @"Cell";  
      
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
    if (cell == nil) {  
        cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] autorelease];  
    }  
      
    // Configure the cell...  
    NSUInteger row = [indexPath row];  
    UITableViewController *controller = [self.controllerListobjectAtIndex:row];  
    cell.textLabel.text = controller.title;  
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
      
    return cell;  
}  

 这是单击条目后进入子视图的方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    NSUInteger row = [indexPath row];  
    UITableViewController *detailController = [self.controllerListobjectAtIndex:row];  
     //进入下一个视图的操作  
    [self.navigationControllerpushViewController:detailController animated:YES];  
    [detailController release];  

 这样基本实现了导航控制的目的,导航栏上方的返回按钮是根据前一个视图的标题自动生成的。

另外还有一些操作是为导航栏添加左右按钮,

self.navigationItem.rightBarButtonItem = [UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItem addTarget:self : action:@selector(change)];

定义顶部左右按钮的方式有如下几种:

initWithBarButtonSystem:target:action: :创建一个标准按钮

initWithCustomView: 自定义按钮(view)

initWithImage:style:target:action 创建一个带图片的按钮

initWithTitle:style:target:action 创建一个带标题的按钮

分享到:
评论

相关推荐

    UINavigationController+UITabBarController框架

    我们写iOS项目的时候,基本都是一个UINavigationController套一个UITabBarController的形式,就是上面一个导航栏,下面几个按钮的工具条的形式。我写了几个应用,发现如果每次都重新写的话完全就是浪费精力和时间,...

    UITabBarController和UINavigationController混用

    在iOS应用开发中,`UITabBarController` 和 `UINavigationController` 是两种常用且重要的控制器,它们各自负责不同的界面展示逻辑。`UITabBarController` 通常用于实现底部标签栏切换不同功能模块,而 `...

    IOS7 UINavigationController滑动Demo

    在iOS开发中,UINavigationController是苹果提供的一种容器类视图控制器,它负责管理一个堆栈式的视图控制器序列。在iOS 7之前,用户通常通过导航栏上的返回按钮或者手势来实现页面间的切换。然而,随着iOS 7的发布...

    UINavigationController详解与使用(二)页面切换和segmentedController

    在iOS开发中,`UINavigationController`是苹果提供的一种强大的视图控制器容器,它负责管理一个堆栈式的视图控制器序列,通常用于实现页面间的导航。本篇将深入讲解`UINavigationController`的页面切换机制以及如何...

    页面跳转 UITabBarController+UINavigationController+UIViewController

    在iOS应用开发中,`UITabBarController`、`UINavigationController`和`UIViewController`是三个非常重要的视图控制器类,它们协同工作,构建出用户友好的界面和流畅的导航体验。`UITabBarController`用于实现底部...

    iOS 使用UINavigationController进行页面间跳转

    在iOS应用开发中,页面间的跳转是用户体验的重要组成部分,而`UINavigationController`是苹果提供的一个强大工具,用于管理屏幕间的导航。这个类提供了一种优雅的方式来组织和控制多个`UIViewController`实例,允许...

    UINavigationController返回按钮的事件

    上传的demo关于UINavigationController中back按钮的重写方法, UINavigationController的back按妞本身是没有监听方法的,但是我们通过添加类目可以使back按钮具有监听的作用.让我们能在UINavigationController触发返回...

    UINavigationController demo

    在iOS开发中,`UINavigationController`是苹果提供的一种强大的视图控制器容器,它负责管理一个堆栈式的视图控制器序列,通常用于实现类似iOS设备上的导航界面。`UINavigationController`在应用中的作用至关重要,它...

    UINavigationController Demo代码

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,主要用于管理多个视图控制器的堆栈,实现页面间的导航。本示例代码“UINavigationController Demo”将深入讲解如何在iOS应用中有效地使用`...

    UINavigationController 显示隐藏

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,它负责管理一系列的`UIViewController`对象,形成一个导航栈。这个栈的顶部视图控制器通常显示在屏幕上,而其他视图控制器则被压入栈中等待...

    iOS 5 编程源码-UINavigationController

    导航控制器(UINavigationController)用来管理一系列显示层次型信息的场景。一般而言,逐步显示更详细的信息。 导航控制器 -- 用户在场景之间切换时,导航控制器依次将视图控制器压入(push)堆栈中,且当前场景的...

    UINavigationController自定义

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,用于管理多个`UIViewController`的堆栈,实现页面间的导航。本篇文章将深入探讨如何对`UINavigationController`进行自定义,特别是关于...

    UINavigationController返回手势失效问题

    * 从iOS7开始,系统为UINavigationController提供了一个interactivePopGestureRecognizer用于右滑返回(pop),但是,如果自定了返回按钮或者隐藏了navigationBar,该手势就失效了。 ## 原因 * 自定义返回按钮或者隐藏...

    UITabBarController和UINavigationController的整合使用

    UITabBarController和UINavigationController的整合使用DEMO,详情见:http://blog.csdn.net/hwe_xc/article/details/50588500

    让 UINavigationController 支持全屏操作手势.zip

    让 UINavigationController 支持全屏操作手势.zip,A UINavigationController's category to enable fullscreen pop gesture with iOS7 system style.

    iOS开发例程 -- UINavigationController和UITabBarController合用

    很多时候我们创建一个基于UITabBarController的application以后还希望能够在每个tab view都可以实现导航控制,即添加一个UINavigationController来实现tabview内部的view之间的切换,这即是本文所要介绍的。

    uinavigationcontroller用法.rar

    uinavigationcontroller是iOS开发中的一个核心组件,它用于管理一系列UIViewController的堆栈,提供导航界面。这个"uinavigationcontroller用法.rar"文件很显然是为了详细解释如何在Objective-C的环境中利用...

    swift——自定义UITabBar,UITabBarController和UINavigationController

    自定义UITabBar,layoutSubviews重写UITabBarButton位置,重写则hitTest方法并监听按钮的点击 自定义的UITabBarController和UINavigationController

Global site tag (gtag.js) - Google Analytics