NavigationControllers具有ViewController堆栈来管理和限制动画过渡。
将视图控制器作为子视图添加到现有视图控制器需要将事件传递给子视图控制器,这很难管理,几乎没有烦恼,并且通常在实现时感觉像是一个糟糕的黑客(Apple也建议不要这样做)。
呈现模式视图控制器再次将视图控制器放在另一个上面,虽然它没有上面描述的事件传递问题,但它并没有真正“交换”视图控制器,而是堆叠它。
故事板仅限于iOS 5,几乎是理想的,但不能在所有项目中使用。
有人可以在没有上述限制的情况下更改视图控制器的方式提供一个SOLID代码示例,并允许它们之间的动画过渡?
一个接近的例子,但没有动画: 如何在没有导航控制器的情况下使用多个iOS自定义视图控制器
编辑:导航控制器使用很好,但需要动画过渡样式(不仅仅是幻灯片效果)显示的视图控制器需要完全交换(不是堆叠)。如果第二个视图控制器必须从堆栈中删除另一个视图控制器,那么它的封装不够。
编辑2:iOS 4应该是这个问题的基本操作系统,我应该在提到故事板时澄清(上图)。
慕田峪9158850