创建三个类
BasicViewController : UIViewController
SecondViewController : UIViewController
ThirdViewController : UIViewController
然后我们在BasicViewController .m文件中push一个viewController:
SecondViewController *svc = [SecondViewController new];
[self.navigationController
pushViewController:svc animated:true];
在SecondViewController.m文件中pop出viewController:
[self.navigationController
popViewControllerAnimated:true]
问题就来了,
push和pop是同一个viewController,那为什么用self.navigationController 就可以知道了
其中在AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
BasicViewController *basicViewController = [BasicViewController new];//实例化内存后,_parentViewController-->nil
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:basicViewController];
// self.window.rootViewController = basicViewController.parentViewController;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
等价于
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
BasicViewController *basicViewController = [BasicViewController new];//实例化内存后,_parentViewController-->nil
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:basicViewController];
self.window.rootViewController = basicViewController.parentViewController; //不可以注释上一句,因为上一句是为_parentViewController实例化
// self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
分配内存如图
- 大小: 40.9 KB
分享到:
相关推荐
总的来说,纯代码搭建iOS的三级结构是一个涉及多层关系和布局设置的过程。通过理解并熟练运用`UITabBarController`、`UINavigationController`和`UIViewController`,以及Auto Layout的约束,开发者可以构建出强大且...
在iOS应用开发中,`UITabBarController`、`UINavigationController`和`UIViewController`是三个非常重要的视图控制器类,它们协同工作,构建出用户友好的界面和流畅的导航体验。`UITabBarController`用于实现底部...
在iOS应用开发中,`UINavigationController`和`UITabBarController`...通过深入理解它们的工作原理和API,开发者可以创建出更加符合设计要求和交互习惯的用户界面。在实践中,不断尝试和调试,以找到最佳的自定义方案。
总之,`UINavigationController`是iOS开发中的关键组件,它有效地管理和控制了多个`UIViewController`之间的切换,提升了用户体验。正确理解和使用`UINavigationController`,将有助于构建高效、流畅的iOS应用。
本文将详细解释ViewController的使用方法,尤其是UITabBarController、UINavigationController和UIViewController之间的关系及使用。 首先,UITabBarController是用于切换不同视图控制器的容器,它提供了多个选项卡...
这里我们将深入探讨如何在iOS应用中创建这种效果,以及如何通过自定义Dome实现这一功能。 首先,让我们了解`UIView`的动画API。iOS提供了一系列内置的`UIView`动画方法,如`animate(withDuration:animations:)`,`...
UIViewController添加多个UIViewController。可以把UIViewController的View当作容器,让其他UIViewController添加进该View,并可以在多个UIViewController间切换。
首先,`UINavigationController`是`UIViewController`的子类,它的主要职责是维护一个`UIViewController`的数组,这些控制器按照它们被压入和弹出的顺序排列。通过调用`pushViewController:animated:`方法,可以将新...
这些方法背后都是UIViewController之间的交互。 最后,了解和熟练掌握UIViewController的使用对于iOS开发者来说至关重要。正确地运用UIViewController能够帮助你构建出结构清晰、易于扩展的用户界面,同时提高代码...
在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,用于管理多个`UIViewController`的堆栈,实现页面间的导航。本篇文章将深入探讨如何对`UINavigationController`进行自定义,特别是关于...
总之,`UITabBarController` 和 `UINavigationController` 的混用是 iOS 开发中常见的场景,理解它们的协作机制以及如何控制 `tabBar` 的显示与隐藏是提升用户体验的关键。通过实践和学习这样的示例项目,开发者可以...
通过故事板兼容的自定义转场,在 UINavigationController 堆栈中的 UIViewController 之间交替的简单方法。 (也与导航控制器堆栈外的视图控制器兼容) 主要基于提供的。 用法 代码中的用法与任何其他 segue 相同...
本篇文章将详细探讨`UIViewController`在iOS 5及后续版本中的新特性,并通过源码解析来深入理解这些功能。 1. **自动旋转和屏幕方向支持** 在iOS 5之前,开发者需要手动处理设备旋转的逻辑。但自iOS 5起,`...
在iOS开发中,自定义导航控制器UINavigationController是一个常见的需求,以满足特定的界面设计和交互体验。本篇文章将深入探讨如何实现自定义导航控制器,并基于提供的代码片段进行解析。 首先,自定义导航控制器...
总之,`UINavigationController`是iOS应用中不可或缺的组件,它简化了页面之间的导航管理。配合`UISegmentedControl`,可以构建出直观且易于操作的用户界面。理解并熟练运用这些知识点,将有助于提升你的iOS开发技能...
在iOS开发中,`UINavigationController`是苹果提供的一种强大的视图控制器容器,它负责管理一个堆栈式的...通过实践这个“UINavigationController demo”,开发者可以深入理解其工作原理,并学会在实际项目中灵活运用。
通过实例学习,可以更好地理解和应用这些知识点,例如创建一个新的`UIViewController`子类,设计视图布局,处理用户交互,以及实现视图控制器之间的跳转等。在项目中实践这些概念,将使你对`UIViewController`有更...
uinavigationcontroller是iOS开发中的一个核心组件,它用于管理一系列UIViewController的堆栈,提供导航界面。这个"uinavigationcontroller用法.rar"文件很显然是为了详细解释如何在Objective-C的环境中利用...
MVVM MVVM是一个图书馆,供谁开始使用Swift编写的MVVM(Model-View-ViewModel)编写iOS应用程序。... UINavigationController和UIViewController的自定义过渡集成Fastlane应用分发。要求iOS 10.0以上Xcode 10.0
3. 视图控制器管理:理解UINavigationController和UIViewController的生命周期,以及如何在抽屉式侧边栏中正确切换和管理不同的视图控制器。 4. 自定义布局:可能涉及到自定义约束(NSLayoutConstraint)来动态改变...