9to*_*ios 1 xcode objective-c uinavigationcontroller presentmodalviewcontroller ios
我有两种方法可以从一个视图控制器跳转到另一个视图控制器
对于presentViewController
[self presentModalViewController:view animated:YES];
Run Code Online (Sandbox Code Playgroud)
对于pushViewControlle应该使用
[self.navigationController pushViewController:view animated:YES];
Run Code Online (Sandbox Code Playgroud)
哪种方法是最好的方法?
哪个会导致更多的内存泄漏?
如果我们的设计是这样的,则使用哪一个
Introduction view (bunch of slides )-> login -> signUp-> HomeActivityScreen-> Then Bunch of tab bar in it
Run Code Online (Sandbox Code Playgroud)
如果您使用pushViewController,您将自动在导航栏中看到一个“后退”按钮。如果您使用presentModalViewController,则您不会,并且通常必须实现您自己的控件和/或回调来处理关闭控制器。
从概念上讲,模式呈现样式通常用于您无法导航的原子任务(即,您要么完成任务,要么取消任务,并且在执行其中一项或另一项之前,您无法在应用程序中执行任何其他操作)。
如果您想知道为什么会有这种差异,我不能说。就我个人而言,我认为提供统一 API 来从一个控制器转移到另一个控制器(例如 cocos2d 或 Android)的框架更有意义。
您使用模态视图控制器将用户的注意力集中在任务上。当您推送时,用户处于某种导航流程中,但仍然可以轻松掌握整个应用程序。他们可能决定前进或后退,切换到中间的不同选项卡,等等。当他们获得模态视图控制器时,他们无法执行任何操作,直到任务完成或取消(模态视图被关闭)
当您呈现模式视图控制器时,系统会在进行呈现的视图控制器和被呈现的视图控制器之间创建父子关系。具体来说,进行呈现的视图控制器会更新其 modalViewController 属性以指向其呈现的(子)视图控制器。类似地,所呈现的视图控制器更新其parentViewController属性以指向回呈现它的视图控制器。
模态视图控制器提供了有趣的方法来管理应用程序的流程。最常见的是,应用程序使用模态视图控制器作为临时中断,以便从用户获取关键信息。但是,您还可以使用模态呈现的视图控制器在特定时间为您的应用程序实现备用界面。
所以,根据我的理解,这是最好的选择。
[self.navigationController pushViewController:view animated:YES];
Run Code Online (Sandbox Code Playgroud)