UINavigationController

本文介绍iOS开发中UINavigationController与ModalViewController的应用。详细讲述了如何创建与使用导航控制器进行视图切换,并讨论了模态视图控制器的场景及动画切换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.UINavigationController

    这是第一种,我们一般称之为导航控制器,这也是使用最频繁的一种方式,因为tableView的子视频一般使用这个方法进行切换。它实现一个什么功能,我就没有必要讲了吧,你既然在看这篇文章,必须也是一个开发者,UINavigationController的原理,我也不讲的,总的意思就是使用堆栈管理每个入栈的UIViewController。我们还是看具体怎么做吧。


(1)第一步:

当然是创建一个UINavigationController了,一般我创建的同时,会顺便添加一个根视图进去,如果没有视图添加进去,自然,UINavigationController也就没有什么意义了。

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:aControl];

(2)第二步:

当然是把这个nav加到我们的窗口中去,我们在上面第一步把aController封装成了nav了,就是入栈第一个视图,就是根视图,任何子视图都有此“开枝散页”,现在可以直接把nav当成一个视图控制器。nav.view就是这个可视的视图aControl本身了。

[window addSubView:nav.view];

相关设置说明:

UINavigationController 本身会自动进行入线,出栈的相关操作,进入到新的视图的同时,UINavigationController 会自动添加左边返回按钮用以返回了一个视图,当然你可以在新的视图中,将这个左边的按钮修改成其它用途。比如,你可以通过设置self.navigationItem.leftBarButtonItem为某个ButtonItem,当用户点击左边按钮时,进行的一些清理操作等。

我们一般在使用过程中会碰到的设置内容有:

self.navigationItem.leftBarButtonItem

self.navigationItem.rightBarButtonItem

self.navigationItem.backBarButtonItem

self.navigationItem.titleView等等,反正属性也挺多的,这里就不一一列举了,可以直接参考SDK文档,都有非常详细的说明。

backBarButtonItem和leftBarButtonItem是不能同时使用的,一山岂能容二虎呢?

(3)第三步:入栈操作:

UIViewController *aViewController = [[UIView alloc] init;
[self.navigationController pushViewController:aViewController   animated:NO];

(4)第四步:出栈操作:

把当前视图pop出去,当然根视图可不行哟。

[self.navigationController popViewControllerAnimated:YES];


2.ModalViewController

我们称其为静态模组,在少量页面的切换中,一般用于选取数据时使用,比如音乐播放列表的页面和当前正在播放的音乐两个页面的切换,使用ModalViewController进行各种动画切换就非常的方便。

(1)切换到新的视图

 [self presentModalViewController:aNewController animated:YES];
 [aNewController release];

  (2)隐藏这个新视图,返回原来的视图  

一般在切换到新视图的时候,会将上一个视图控制器的地址传入到新的视频控制器,这样,在新的视频控制器就可以调用上一个视频控制器的内容。

当原来的视图调用dismissModalViewControllerAnimated:YES的时候,则刚才推入的视频将会隐藏。

[self.myParentViewController dismissModalViewControllerAnimated:YES];

使用静态模组的方法特别需要注意内存的处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值