`
zhanhao
  • 浏览: 286802 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】UINavigationController使用技巧

    博客分类:
  • iOS
阅读更多

,创建并使用一个UINavigationController

 

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

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

 

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

,设置导航栏的左右按钮:

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

 

设置其标题:

 

aView.title = @"标题"; //配置一个按钮,我这里是《我的佛典》上的代码UIBarButtonItem *callModalViewButton = [[UIBarButtonItem alloc]       initWithTitle:@"经文"       style:UIBarButtonItemStyleBordered       target:self       action:@selector(callModalList)];self.navigationItem.leftBarButtonItem = callModalViewButton;[callModalViewButton release]; //由于本地视图会retain它,所以我们可以release了

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

,其他常用方法和属性:

 

本地视图.navigationItem.leftBarButtonItem //左边栏项目本地视图.navigationItem.rightBarButtonItem //右边栏项目本地视图.navigationItem.backBarButtonItem //后退栏项目本地视图.navigationItem.hidesBackButton //隐藏后退按钮(YES or NO)

在视图的viewWillAppear:方法中添加:

 

 

[self.tableView reloadData];

 

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

 

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

 

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

. 设置代理类

 

 

nav.delegate = self;

. 代理类实现UINavigationControllerDelegate Protocol

. 在代理类中添加– 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:的不同页面转换特效

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

. 使用普通的来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在不同的猫咪...

    iOS-自定义转场动画

    3. **UIViewControllerTransitioningDelegate**: 当你希望在某个UIViewController中使用自定义转场动画时,可以设置该控制器的transitioningDelegate属性,并实现对应的协议方法,这样系统就会在转场时调用你的...

    ios-自定义present和dismiss转场动画.zip

    本资源"ios-自定义present和dismiss转场动画.zip"聚焦于如何为UIViewController的present和dismiss操作定制专属的动画效果,以实现类似于UINavigationController的push和pop动态过渡。 首先,我们来看`present`转场...

    学会了页面跳转机制,和调试页面的技巧(平移箭头),还有就是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中滑动...

    WHC_NavigationController

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

    ios页面跳转

    `NavigationControllerByStoryboard`展示了如何使用UINavigationController进行页面管理。UINavigationController是一个容器控制器,它可以管理一系列的子控制器,并提供一个导航栏来显示这些控制器的标题。 1. 在...

    iPhone上画面切换特效 多媒体源码_ios源码

    在iOS中,每个屏幕通常对应一个UIViewController实例,而视图控制器之间的切换可以通过导航控制器(UINavigationController)、页面视图控制器(UIPageViewController)或者自定义转场动画来完成。这里我们将关注...

    iOS 5 Programming Cookbook

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

    hhgLTNavigationBarDemo

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

    Ipad 应用开发实战

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

    iOS第三方开源类库 -- 视图切换 HMGLTransitions

    在iOS中,通常使用UINavigationController的push和pop操作或者UIViewController的present和dismiss方法进行视图控制器的切换。然而,系统默认的过渡动画可能无法满足所有设计需求,因此HMGLTransitions提供了自定义...

    ios 控制器切换特效

    使用异步绘制、减少视图层级、适时使用`CALayer`的`shouldRasterize`属性等技巧可以帮助提高动画的流畅性。 通过以上技术,开发者可以创建出各种独特的控制器切换特效,从而提升iOS应用的用户体验和吸引力。实践...

    ios-TransitionAniDemo.zip

    同时,它可能还提供了关于何时使用系统默认转场、何时自定义转场,以及如何平衡动画复杂性和性能的最佳实践。 TransitionAniDemo是一个全面了解和学习iOS动画过渡的宝贵资源,无论你是初学者还是经验丰富的开发者,...

    IOS 开发总结

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

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

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

    仿网易新闻简约导航IOS代码

    在iOS中,开发者可能通过实现UINavigationControllerDelegate的协议方法,或者自定义UINavigationController子类来实现这样的转场动画。 总之,这个开源项目提供了学习和实现iOS应用简约导航的一个实例,它结合了...

    GKFadeNavigationController.zip

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

Global site tag (gtag.js) - Google Analytics