`
zl4393753
  • 浏览: 340362 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

UINavigationController 使用技巧

 
阅读更多
原文地址: http://www.cnblogs.com/pipizhu/archive/2011/05/30/2063235.html

1,创建并使用一个UINavigationController

UINavigationController *aNav = [[UINavigationController alloc] init];


然后添加一个视图进去,否则导航栏也没有意义的

UIViewController *aView = [[UIView alloc] initWithNibName: (*xib文件名*)];[aNav pushViewController:aView animated:NO];//导航栏的第一个视图不要动画化


2,设置导航栏的左右按钮:
我说过,设置导航栏的按钮并不是去设置导航栏本身,而是当时被导航的视图控制器,比如我们对aView作设置。

设置其标题:

aView.title = @"标题"; 
UIBarButtonItem *callModalViewButton = [[UIBarButtonItem alloc]       initWithTitle:@"经文"       style:UIBarButtonItemStyleBordered       target:self       action:@selector(callModalList)];self.navigationItem.leftBarButtonItem = callModalViewButton;[callModalViewButton release]; //由于本地视图会retain它,所以我们可以release了


可以看到,还是很简单的嘛。

3,其他常用方法和属性:

本地视图.navigationItem.leftBarButtonItem //左边栏项目本地视图.navigationItem.rightBarButtonItem //右边栏项目本地视图.navigationItem.backBarButtonItem //后退栏项目本地视图.navigationItem.hidesBackButton //隐藏后退按钮(YES or NO)
在视图的viewWillAppear:方法中添加:

[self.tableView reloadData];


不起作用,viewWillAppear:这个方法根本没有调用

后来发现原来用了UINavigationController后,viewWillAppear方法是没有效果的,要用UINavigationControllerDelegate的– navigationController:willShowViewController:animated:方法才可以达到这个目的。

所以要做到这个,你必须做以下几步:

1. 设置代理类

nav.delegate = self;


2. 代理类实现UINavigationControllerDelegate Protocol
3. 在代理类中添加– navigationController:willShowViewController:animated:方法
如:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
[self.myTableView reloadData];
}

pushViewController:viewController animated:BOOL


(加载视图控制器)
– 添加指定的视图控制器并予以显示,后接:是否动画显示

popViewControllerAnimated:BOOL

(弹出当前视图控制器)
– 弹出并向左显示前一个视图

popToViewController:viewController animated:BOOL

(弹出到指定视图控制器)
– 回到指定视图控制器, 也就是不只弹出一个

popToRootViewControllerAnimated:BOOL

(弹出到根视图控制器)
– 比如说你有一个“Home”键,也许就会实施这个方法了。

setNavigationBarHidden:BOOL animated:BOOL

(设置导航栏是否显示)
– 如果你想隐藏导航栏,这就是地方了。参照Picasa的WebApp样式

现pushViewController:animated:的不同页面转换特效

1. 首先要明确的是,不使用pushViewController的默认动画,所以在调用这个函数时,要将animated设置为NO.

2. 使用普通的来CATransition实现转换效果,代码如下:
CATransition *animation = [CATransition animation];

[animation setDuration:0.3];

[animation setType: kCATransitionMoveIn];

[animation setSubtype: kCATransitionFromTop];

[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];

    [self.navigationController pushViewController:m_poseAddIssueViewController animated:NO];

    [self.navigationController.view.layer addAnimation:animation forKey:nil];
分享到:
评论

相关推荐

    UINavigationController自定义

    总之,自定义`UINavigationController`的push动画是iOS开发中的一个高级技巧,它能帮助开发者为应用增添独特的视觉效果和交互体验。通过理解并实践上述步骤,开发者可以自由地塑造导航控制器的行为,从而提升应用的...

    iOS 7UINavigationController

    对于ILoveCatz-Final这个项目文件,我们可以假设它是一个关于猫的iOS应用的最终版本,其中可能包含了使用UINavigationController构建的导航结构。在这个应用中,用户可能可以通过UINavigationController在不同的猫咪...

    学会了页面跳转机制,和调试页面的技巧(平移箭头),还有就是tab bar item可以通过image属性来添加图片!.zip

    常用的方法包括使用UINavigationController进行栈式导航,通过pushViewController:animated:方法将新的视图控制器推入导航栈,用户可以使用popViewController:animated:或popToRootViewControllerAnimated:返回到...

    add a navigationcontroller to window帮助文档

    ### 添加 UINavigationController 到 UIWindow 的详细步骤与技巧 在 iOS 开发过程中,`UINavigationController` 是一个非常重要的组件,它能够帮助我们实现页面间的导航和管理。本文将通过一系列的示例来详细介绍...

    iOS开发技巧

    这里的关键在于设置`UINavigationController`中的`interactivePopGestureRecognizer`的代理。这样做的目的是为了让系统知道我们想要自定义处理左滑返回手势的行为。 #### 3. ScrollView无法在viewController中滑动...

    hhgLTNavigationBarDemo

    【hhgLTNavigationBarDemo】是一个基于iOS平台的项目示例...通过学习和分析`hhgLTNavigationBarDemo`,开发者不仅可以掌握自定义导航栏的技巧,还能了解到如何在实际项目中实现复杂的交互效果,提升iOS应用的用户体验。

    WHC_NavigationController

    在【WHC_NavigationController】项目中,开发者可以查看源代码,了解实现这些功能的具体方法和技巧,包括对UINavigationController的子类化、代理协议的使用、手势识别器的集成、自定义转场动画的编写等。...

    Ipad 应用开发实战

    - 导航控制器 (UINavigationController) 和标签控制器 (UITabBarController) 的使用。 - 弹出控制器 (UIPopoverController) 和分割视图控制器 (UISplitViewController) 的应用场景。 - 实战案例:基于分割视图...

    IOS源码——导航及底部菜单.zip

    在实际应用中,我们通常会结合使用这两种控件,比如在一个TabBarItem下,通过UINavigationController展示一个有层级关系的数据或功能。这在iOS的“发现”、“消息”等常见应用模式中很常见。 源码中可能还涉及到...

    GKFadeNavigationController.zip

    总的来说,GKFadeNavigationController是一个展示了如何使用Objective-C自定义UINavigationController过渡动画的实例。它不仅提供了平滑的渐变效果,还揭示了iOS应用开发中的导航控制器定制技术,有助于开发者深入...

    IOS 开发总结

    - 常用方法:分享了一些有用的iOS开发技巧,例如如何使图片拉伸后不模糊,如何使用自定义字体等。 - 后台运行:讨论了iOS应用后台运行的机制和限制。 - UITableView和UITableViewCell的高级使用:包括如何自定义...

    iOS实例开发源码——FRLayeredNavigationController.zip

    《iOS实例开发源码——...掌握其工作原理和使用技巧,对于提升应用的用户体验和开发效率具有重要意义。在实际项目中,根据需求选择合适的方式进行集成,能够有效地提升应用的设计层次感和功能性。

    页面切换教程 使用了ARC技术

    在iOS开发中,页面切换是用户体验中的重要组成部分,它涉及到视图控制器的管理与...通过学习,开发者不仅能够掌握页面切换的基本技巧,还能深入理解ARC如何在内存管理中发挥作用,从而编写出更稳定、高效的iOS应用。

    iOS 5 Programming Cookbook

    - **1.23 分配和使用数组**:提供数组的创建和管理技巧。 - **1.24 分配和使用字典**:介绍如何使用字典存储键值对。 - **1.25 分配和使用集合**:解释集合的特性和使用场景。 - **1.26 创建捆绑包**:说明如何...

    iOS中tabbar的嵌套使用

    1. **使用`UINavigationController`嵌套**:每个`TabBarItem`可以关联一个`UINavigationController`,这样在某个特定的`ViewController`中,你可以再次添加一个`TabBar`。这样做的好处是可以利用`...

    仿QQ导航栏

    为了实现侧拉菜单,开发者可能需要自定义`UINavigationController`的行为,或者使用第三方库如MMDrawerController或SWRevealViewController来实现类似QQ的滑动抽屉效果。侧拉菜单可以用来展示更多的功能选项,增强...

    Mono 代码实现系统返回,跳转至上一页面

    除了上述方法,还可以使用`PopViewControllerAnimated`方法直接从`UINavigationController`中弹出顶层的ViewController: ```csharp if (navigationController.TopViewController != null) { navigationController...

    ios-push控制器, 当前导航栏隐藏, 下个控制器导航栏显示.zip

    在iOS应用中,我们通常使用UINavigationController来管理一系列的UIViewController,通过pushViewController:animated:方法来在不同的控制器之间进行平滑的过渡。然而,有时候根据设计需求,可能需要在特定的控制器...

    企业级ios应用开发实践5

    本章可能深入到UITableView和UICollectionView的使用,导航控制器(UINavigationController)、标签页控制器(UITabBarController)以及模态视图(UIViewController)的管理。 4. **Model-View-Controller (MVC) ...

    iOS中导航栏的基本使用汇总

    在iOS开发中,导航栏(UINavigationController)是一个至关重要的组件,它用于展示应用程序中的层级结构,通常包含一个标题和一个或多个操作按钮。...掌握这些技巧,开发者可以更好地打造自己的iOS应用。

Global site tag (gtag.js) - Google Analytics