视图控制器常用过渡Show和Present Modally

视图控制器的过渡不会有二义性,一个视图不会同时过渡到�另外两个视图,这样程序也会懵逼了,你他喵到底要我转到哪个视图...

1、两个最原始的ViewController之间的过渡:


视图控制器常用过渡Show和Present Modally_第1张图片
1.1-两个ViewController的过渡

选中Button按住Control拖拽到ViewController2,弹出选项框

视图控制器常用过渡Show和Present Modally_第2张图片
1.2-两个ViewController的过渡

视图控制器常用过渡Show和Present Modally_第3张图片
1.3-两个ViewController的过渡

分别选择Show过渡和Present Modally过渡在模拟器上运行,可以发现两者的过渡没有多少区别。

视图控制器常用过渡Show和Present Modally_第4张图片
1.4-两个ViewController的过渡

视图控制器常用过渡Show和Present Modally_第5张图片
1.5-两个ViewController的过渡


2、将父视图(即第一个视图)内嵌于一个导航控制器中

选中视图,顶部菜单Editor->Embed In->Navigation Controller

视图控制器常用过渡Show和Present Modally_第6张图片
2.1-带有导航控制器的ViewController过渡

于是父视图前面就多了一个Navigation Controller:

视图控制器常用过渡Show和Present Modally_第7张图片
2.2-带有导航控制器的ViewController过渡

现在我们选择父视图和子视图的过渡方式为Show,Build&Run:

视图控制器常用过渡Show和Present Modally_第8张图片
2.3-带有导航控制器的ViewController过渡

可以发现,子视图中多了一个返回到父视图的按钮,还有值得注意的是,子视图继承了父视图的“部分导航栏”,为什么说是“部分”呢,下面紧接着说。

由于父视图内嵌于导航控制器,因此还能在导航栏中央设置标题,如下图所示"View1"

视图控制器常用过渡Show和Present Modally_第9张图片
2.4-带有导航控制器的ViewController过渡

这是因为父视图有一个"Navigation Item"(导航栏)的东西

视图控制器常用过渡Show和Present Modally_第10张图片
2.5-带有导航控制器的ViewController过渡

而我们发现子视图却没有,所以它不能设置标题,但可以说它有部分导航栏,体现在应用运行时,我们进入到子视图时有一个返回按钮,它是导航栏的一部分。

视图控制器常用过渡Show和Present Modally_第11张图片
2.6-带有导航控制器的ViewController过渡

可以尝试手动给子视图加入Navigation Item,并设置标题为"View2":

视图控制器常用过渡Show和Present Modally_第12张图片
2.7-带有导航控制器的ViewController过渡
视图控制器常用过渡Show和Present Modally_第13张图片
2.8-带有导航控制器的ViewController过渡

再次Build&Run:

视图控制器常用过渡Show和Present Modally_第14张图片
2.9-带有导航控制器的ViewController过渡
视图控制器常用过渡Show和Present Modally_第15张图片
2.10-带有导航控制器的ViewController过渡

完美

将过渡方式改为Present Modally之后:

视图控制器常用过渡Show和Present Modally_第16张图片
2.11-带有导航控制器的ViewController过渡

子视图打回原形,既没有返回按钮,也没有导航栏。

视图控制器常用过渡Show和Present Modally_第17张图片
2.12-带有导航控制器的ViewController过渡

如果此时企图在子视图中像刚才那样手动添加"Navigation Item",也于事无补:

可以发现虽然在子视图内含有"Navigation Item",但没有体现在视图中,即使就这么运行,情况也和上面一样,子视图不会显示导航栏。

视图控制器常用过渡Show和Present Modally_第18张图片
2.13-带有导航控制器的ViewController过渡

此时应该将子视图内嵌于一个导航控制器,完成后如下图:

视图控制器常用过渡Show和Present Modally_第19张图片
2.14-带有导航控制器的ViewController过渡

现在子视图也有一个名副其实的Navigation Item了,给其设置一个酷炫的标题之后运行。因为父视图没什么变化,就不贴图占位置了,直接看子视图:

视图控制器常用过渡Show和Present Modally_第20张图片
2.15-带有导航控制器的ViewController过渡

在Present Modally(模态视图)的过渡方式中,子视图不会自动生成返回按钮,需要手动添加,并编写一个返回按钮的点击事件:

-(IBAction)backClick: (id)sender {

      [ self dismissViewControllerAnimated: TRUE completion: nil ] ;  //关闭模态视图

假如这种情况下,我们再把Present Modally过渡方式改为Show,运行应用程序,发现与上面的结果完全一样。

所以如果想省心点要自动生成返回按钮,那子视图就不要内嵌于导航控制器,并且采用Show过渡方式。

你可能感兴趣的:(视图控制器常用过渡Show和Present Modally)