文档章节

Implementing Navigation with UINavigationControlle

人生天地间
 人生天地间
发布于 2014/02/17 22:55
字数 757
阅读 24
收藏 0

问题:

     你想要允许你的用户在视图之间来回切换

解决方法:

     

     使用UINavigationController

讨论:

     选择Empty Application取什么名字你随意,然后选择菜单文件选择New->New File...选择第一个objective-c Class这个文件,命名为FirstViewController,继承自UINavigationController。

     基本文件搞定,然后我们开始,找到APP的代理文件 AppDelegate.m文件,然后写下如下代码:

                 #import “AppDelegate.h”

                 #import “FirstViewController.h”

                 @interface AppDelegate ()

                  @property(nonatiomic,strong) UINavigationController *navigationController;

                 @end

               @implementation AppDelegate

             …

    现在我们要使用 initWithRootViewController : 方法初始化导航栏,并且传递我们的参数。然后导航栏就作为根视图出现在窗口上。这里千万不要混淆,UINavigationController是UIViewController的子类,这里的RootViewController可以是任何对象,所以我们希望我们的根视图控制器是一个导航控制器,就只需设置导航控制器为根视图控制器。     那么开始动手写代码

      - (BOOL)  application:(UIApplication *)application didFinishLauchingWithOptions: (NSDictionary *) lauchOptions

  

{

   FirstViewController *viewController = [[FirstViewController alloc ] initWithName:nil bundle:nil];

   self.navigationController = [[UINavigationController alloc ] initWithRootViewController:viewController];

   self.window = [[UIWindow alloc] initWithName: [UIScreen mainScreen] bounds];

   

   self.window.rootViewController = self.navigationController;

   self.window.backgroundColor = [UIColor whiteColor];

  [self.window makeKeyAndVisible];

  

   return YES;

}

  现在在模拟器中运行这个应用看: 应该出现这个图片:

图:1-33 显示导航栏控制器

可能会注意到导航栏显示“First Controller”,这难道是新的部件?并不是,这也是导航条,我们会在很多的导航中使用到那个bar,这里的bar显示的是一个文本,每个视图控制器指定了一个标题本身,一旦视图控制器被压入堆栈,导航控制器就会自动显示这个文本!

  找到我们的根视图控制器的实现稳健,在ViewDidLoad方法里面,设置标题并且添加按钮,当用用户按下这个按钮,就会跳到第二个视图控制器! (还是在AppDelegate.m文件里,然后代码如下:)

      #import “FirstController.h”

      #import “SecondController.h”

     @interface FirstViewController ()

            @property (nonatomic, strong) UIButton *displaySecondViewController;

     @end

    

    @implemetation FirstViewController

 

    - (void) performDisplaySecondViewController: (id)parmamSender

{

     SecondViewController *secondController  = [[SecondViewController alloc] initWithName:nil  bundle:YES];

      [self.navigationContoller pushViewContoller : secondController  animated: YES];

}

   - (void)viewDidLoad

{

   [super viewDidLoad];

   self.title = @“First Controller”;

   

   self.displaySecondViewController  = [UIButton buttonWithType:UIButtonTypeSystem];

  [self.displaySecondViewController setTitle:@“Display Second View Controller”  forState:UIControlStateNormal];

  [self.displaySecondViewController sizeToFit];

  self.displaySecondViewController.center  = self.view.center;

 [self.displaySecondViewController addTarget:self  action:@selector (performDIsplaySecondViewController:) forControlEvents: UIControlEventTouchUpInside];

[self.view.addSubBiew: self.displaySecondViewController];

}

@end

现在创建第二个视图控制器,命名为SecondViewController,(就像创建FIrstViewController一样创建SecondViewController)既然创建了,那我们就给他一个标题

#import  “SecondViewController.h”

@implementation  SecondViewController

- (void)viewDidLoad

{

  [super viewDidLoad];

  self.title = @“Second Controller”;

}

两个视图都创建好了,接下来要做的就是实现从第一个视图跳转到第二个试图。使用popViewControllerAnimate:方法,取布尔作为参数。如果布尔值设置为YES ,就会在转到下一个视图控制器的时候会有动画效果,如果NO则反之。当显示屏幕上的第二个视图控制器,你会看到类似于图1-34所示的东西。

图:1-34

#import “SecondViewController


@implementation SecondViewController

- (void)viewDidLoad

{

   [super viewDidLoad];


   self.title = @“Second Controller”;

}


- (void)goBack

{

   [self.navigationController popViewControllerAnimates:YES];

}


- (void) viewDidAppear:(BOOL)paramAnimated

{

   [super viewDidAppear : paramAnimated];

   [self performSelector: @selector(goBack)  withObject:nil      afterDelay:5.0f];

}

@end


通过以上代码我们就完成了我们的需求了!



© 著作权归作者所有

人生天地间
粉丝 12
博文 47
码字总数 42508
作品 0
常州
程序员
私信 提问
解决:IOS<5.0时viewDidAppear/viewWillAppear无法被调用

原因: 苹果的文档是这样描述的: If the view belonging to a view controlleris added to a view hierarchy directly, the view controller will not receivethis message. If you insert......

hello77
2012/10/10
1K
1
Spring.NET 1.2.0 RC1 版本发布

Spring.NET 1.2.0 RC1发布了。 Download | Documentation | Changelog 该发行版包括下面的更新: WCF Integration - Configure WCF services using dependency injection. Apply AOP advice ......

红薯
2008/10/17
422
0
UIViewController摘要

1、self.view在首次使用时,会用loadView初始化,并触发viewdidload完成以后,继续self.view操作 IOS6.0中,弃用viewDidUnload和viewWillUnload…从而只能使用 didReceiveMemoryWarning ,在...

dake
2014/01/29
130
0
代号为Namoroka -- FireFox 3.6 功能计划公布

在Mozilla FireFox 3.5 “Shiretoko”版发布前两天,3.6版本的开发代号也已经公布:“Namoroka”. 这一版本预计在2010年上半年正式发布,新版将采用Gecko 1.9.2版本的内核,提升性能和管理浏览器...

红薯
2009/06/03
203
0
Android开发之学习官方文档Navigation Drawer记录

Creating a Navigation Drawer PreviousNext This lesson teaches you to: Create a Drawer Layout Initialize the Drawer List Handle Navigation Click Events Listen for Open and Close ......

Angels_安杰
2015/12/10
132
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
54分钟前
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部