首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用rootViewController后未加载,使用->显示(viewControllerToPresent: UIViewController,动画: true,完成:空)

调用rootViewController后未加载,使用->显示(viewControllerToPresent: UIViewController,动画: true,完成:空) 是一个关于iOS开发中视图控制器的问题。在iOS开发中,视图控制器是用来管理应用程序界面的对象。rootViewController是应用程序的根视图控制器,它负责管理整个应用程序的视图层级结构。

在调用rootViewController后未加载的情况下,使用->显示(viewControllerToPresent: UIViewController,动画: true,完成:空)可以用来显示一个新的视图控制器。其中,viewControllerToPresent是要显示的视图控制器对象,动画参数指定是否使用动画效果进行显示,完成参数是一个闭包,用于在显示完成后执行一些操作。

这个问题的解决方法可能是由于rootViewController未加载导致的,可以尝试在调用rootViewController之前确保其已经加载完成。可以通过以下步骤来解决这个问题:

  1. 确保在调用rootViewController之前,应用程序的窗口已经正确初始化并设置了rootViewController属性。
  2. 在调用rootViewController之前,可以使用合适的方法来确保视图控制器已经加载完成,例如在AppDelegate中的application:didFinishLaunchingWithOptions:方法中进行初始化操作。
  3. 如果仍然遇到问题,可以尝试延迟调用rootViewController的显示方法,例如使用DispatchQueue.main.asyncAfter方法来延迟一段时间后再进行显示。

关于iOS开发中的视图控制器和其相关概念、分类、优势、应用场景,以及腾讯云相关产品和产品介绍链接地址,可以参考以下内容:

  • 视图控制器是iOS开发中用于管理应用程序界面的对象,它负责处理界面的展示、用户交互和数据传递等任务。视图控制器可以分为根视图控制器、导航视图控制器、标签视图控制器、模态视图控制器等不同类型。
  • iOS开发中的视图控制器具有以下优势:提供了良好的界面管理机制,方便开发者进行界面布局和交互逻辑的处理;支持界面的生命周期管理,可以在不同的生命周期方法中执行相应的操作;提供了多种界面切换和导航方式,方便用户进行界面间的切换和导航。
  • 视图控制器在各种应用场景中都有广泛的应用,例如:展示静态内容的页面、展示动态数据的列表页面、展示图片和视频的页面、处理用户输入和交互的页面等。
  • 腾讯云提供了一系列与移动开发相关的产品和服务,例如腾讯云移动应用开发平台、腾讯云移动推送、腾讯云移动分析等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多相关产品和服务的详细信息。

请注意,由于要求不能提及特定的云计算品牌商,因此无法提供与腾讯云相关的具体产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS接入开屏广告教程 : 以腾讯优量汇为案例

开屏全屏广告需使得显示区域其高度与设备高度一致,即为开屏全屏广告。开发者可通过以下接口配合使用提供媒体logo,用以随开屏广告展示。...showAdInWindow前时需判断下 * @return 当广告已经加载完成曝光时,为YES,否则为NO */ - (BOOL)isAdValid; III、适配idfa 3.1 适配开屏广告...建议流量主等待方法回调完成后处理广告相关逻辑,这样如果用户授权使用IDFA等广告标识符信息,优量汇iOS SDK可以使用IDFA等广告标识符进行广告请求。...*)getCurrentVC { UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController...; UIViewController *currentVC = [self getCurrentVCFrom:rootViewController]; return

2.7K20

UINavigationController

使用步骤 初始化UINavigationController 设置UIWindow的rootViewController为UINavigationController 根据具体情况,通过push方法添加对应个数的子控制器...UINavigationController以栈的形式保存子控制器 使用push方法能将某个控制器压入栈 - (void)pushViewController:(UIViewController...比如按钮),自动执行Segue,自动完成界面跳转 按住Control键,直接从控件拖线到目标控制器 如果点击某个控件,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型Segue” 手动型:...需要通过写代码手动执行Segue,才能完成界面跳转 按住Control键,从来源控制器拖线到目标控制器 手动型的Segue需要设置一个标识 在恰当的时刻,使用perform方法执行对应的Segue [...如果点击某个控件,需要做一些判断,也就是说:满足一定条件才跳转到下一个界面,建议使用“手动型Segue” 利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转

1.4K60
  • UIViewController生命周期

    一、视图控制器 UIViewController采用懒加载的方式,也就是说第一次访问到view属性时才会加载或创建它。...但总的实现原理非常类似 通过这种方式加载视图,需要调用UIViewController类的initWithNibName:bundle:方法 通过loadview方法加载: 这就是通过代码加载...合创建一些附加的view和控件 3、ViewWillAppear 在视图加载完成,并即将显示在屏幕上时,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏的风格等。...在这里可以进行一些显示前的处理。比如键盘弹出,一些特殊的过程动画(比如状态条和navigationbar颜色)。...四、程序的生命周期 应用程序的状态: Not running运行:程序没启动。

    1.9K10

    程序启动的完整过程

    rootViewController 显示窗口 窗口(UIWindow) 一种特殊的UIView,一个app中至少有一个UIWindow iOS启动完毕创建的第一个视图就是UIWindow 接着创建控制器...*rootVc = [[UIViewController alloc] initWithNibName:@"VC" bundle:nil]; self.window.rootViewController...若传入参数 先加载与控制器名字的View.xib 若控制器命名为YLViewController,则首先加载YLView.xib 而后加载与控制名字一样的xib 若控制器命名为YLViewController...,则首先加载YLViewContrller.xib 若都找不到则加载。...当收到内存警告) viewWillUnload(view即将销毁的时候) 销毁view,首先不在视野中得view viewDidUnload(view销毁完毕) 处理应用程序的一些生命周期方法 // 程序启动完成的时候调用

    1.5K150

    iOS开发·UIWindow与视图层级调整技巧(makeKeyWindow,resignKeyWindow,makeKeyAndVisible,keyWindow,windowLevel,UIWind

    UINavigationController对象的rootViewControllerUIViewController对象。...初始化其rootViewController的方法为: - (instancetype)initWithRootViewController:(UIViewController *)rootViewController...指定自定义视图控制器 UIViewController *vc = [[UIViewController alloc]init]; _window.rootViewController = vc; 3....销毁自定义UIWindow 自定义视图用完,记得要销毁自定义的UIWindow,否则导致APP以后会有越来越多没用到的UIWindow,即使再也没有显示过它们,但是可以用调试工具看到许多废弃的window...获取App所有window的windows数组 [[UIApplication sharedApplication] windows] 例如,第三方加载动画框架KVNProcess中KVNProgress.m

    7.9K10

    基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了

    iOS程序启动完毕,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。...*rootVc = [[UIViewController alloc]init]; self.window.rootViewController = rootVc; ***********...storyboardWithName:@"Main" bundle:nil]; // 加载sotryboard描述的控制器 // 加载箭头指向的控制器 UIViewController...UIWindow的层级 UIWindow是有层级的,层级高的显示在最外面,当层级相同时,越靠后调用显示在外面。...(假如没有storyboard)就不会加载storyboard,也就不会帮我们创建UIWindow,那么我们需要自己在程序启动完成的时候也就是在didFinishLaunchingWithOptions

    1.6K20

    在React Native中构建启动屏

    可以说,启动画面是让您的移动应用的品牌名称和图标深入用户记忆的最佳方式。 在网络应用中,我们使用加载器为用户提供动画娱乐,同时服务器操作正在处理中。...例如,考虑一个从API加载数据的场景。在用户等待时显示加载器是一种良好的用户体验。...完成的应用将如下图所示 为什么启动画面的图片大小很重要 为移动应用创建启动画面可能会有些棘手,你肯定不希望由于启动画面分辨率的不一致在某些设备上出现显示问题。例如,安卓设备的需求与iOS完全不同。...*rootViewController = [UIViewController new]; rootViewController.view = rootView; self.window.rootViewController...如果一切设置正确,你应该会看到类似于这样的结果: 在应用加载隐藏启动屏幕 为了在应用加载时隐藏启动屏幕,我们将使用之前安装的 react-native-splash-screen 包。

    45210

    如何优雅的动态修改app 图标

    完成的操作将会在任意的后台队列中异步执行; 如果需要更改UI,请确保在主队列中执行. - (void)setAlternateIconName:(nullable NSString *)alternateIconName...3,编写代码 配置完成,代码部分就比较简单了: - (void)changeAppIconWithName:(NSString *)iconName { if (!...if (error) { NSLog(@"更换app图标发生错误了 : %@",error); } }]; } 在需要修改icon的地方调用这个方法...从上面的示意图可以发现,在设置icon的时候,会有个系统弹框,这样有时候会不太友好,我们可以使用Runtime,对UIViewController进行扩展来隐藏这个弹框: // UIViewController...#import "UIViewController+LQNoPresent.h" #import @implementation UIViewController (LQNoPresent)

    1.4K20

    iOS对UIViewController生命周期和属性方法的解析

    基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑。...7:viewDidLayoutSubviews:已经布局完成子视图。 8:viewDidAppare:视图完成显示调用。 9:viewWillDisappear:视图将要消失时调用。...注意:经过测试,从nib文件加载的controller,只要不释放,在每次viewWillAppare时都会调用layoutSubviews方法,有时甚至会在viewDidAppare调用一次layoutSubviews...在iOS9中,UIViewController还增加了下面一个布尔值的属性,可以同来判断controller的view是否已经加载完成: @property(nullable, nonatomic, readonly...的模态跳转及动画特效         单纯的UIViewController中,我们使用最多的是如下的两个方法,一个向前跳转,一个向后返回: - (void)presentViewController:

    2.9K20

    UIWindow使用纯代码加载根控制器2. UIWindow的创建过程3. 四大对象之间的关系

    UIWindow/使用纯代码加载根控制器 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow -iOS程序启动完毕,创建的第一个视图控件就是UIWindow,接着创建控制器的...*mainController = [[UIViewController alloc] init]; // 给窗口指定根视图控制器 window.rootViewController...,即看到了运行显示的界面。...在该方法中,创建一个Window 然后创建一个控制器,并把该控制器设置为UIWindow的根控制器 接下来再将window显示出来,即看到了运行显示的界面。 3....的属性 rootViewController设置成要显示UIViewController 最后 显示UIViewController对象的view ?

    1.7K30

    iOS 小技能:Method Swizzling (交换方法的IMP)

    交换两个方法的实现一般写在分类的load方法里面,因为load方法会在程序运行前加载一次,而initialize方法会在类或者子类在 第一次使用的时候调用,当有分类的时候会调用多次。...不要在load里面取加载对象,因为我们再load调用的时候根本就不确定我们的对象是否已经初始化了,所以不要去做对象的初始化 I Method Swizzling基础 在Objective-C的Runtime...1.3 Method swizzling的时机 如果使用恰当,Method swizzling 还是很安全的,一个简单安全的方法是,仅在load中swizzle ,在 dispatch_once 中完成...main之前,并且不需要我们初始化,+load`方法是在类或者类别被加载到Objective-C时执行。...2、 修复拜访记录日期控件PGDatePicker蒙版的问题:点击时间输入框,弹窗蒙版变成了空白 // 2、后遗症:因为把显示效果修改为:UIModalPresentationOverFullScreen

    1.6K10

    iOS初步集成极光推送你还要做这些事

    当我们把推送证书配置好再把极光SDK拖入项目配置,然后注册极光推送,完成代理,这样没有太多意外你就能收到消息了,但是我们都知道还需要做一些处理,都是哪些呢?...● 你测试包(真机调试)收到通知,怎么确定上架包也能收到消息? 今天小伙伴问我Badge怎么弄,我这边徽章个数是从服务器请求的,使用WZLBadge这个三方绘制的。...UIViewController *currentVC = [self currentViewController]; //获取Window当前显示的ViewController - (UIViewController...○启动时受到消息如何处理?如何跳转 这种情况是最不容易找到的,因为当你的应用启动,点击了通知栏,它没有调用任何极光的代理,这时候需要我们去启动函数进行判断。...我们这里使用蒲公英平台安装生产环境包,archive选择 ? image.png 然后选择Ad Hoc ? image.png 这样打包就是生产包了。

    2.8K50

    iOS App 启动性能优化

    App启动过程 解析Info.plist 加载相关信息,例如如闪屏 沙箱建立、权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖的Mach-O文件(递归调用Mach-O...例如在【各种业务请求配置更新】的部分,经过分析优化,启动过程并发的http请求数量从66条压缩到了23条,如此一来为启动成功新闻资讯及其图片的加载留出了更多的带宽,从而保证了在第一时间完成新闻资讯的加载...大部分view都是直接加载完的。有些界面的加载非常复杂,比如再进入App时会展示一个检查WiFi可用性和安全性的动画,由于需要叠加较多图片,这部分视图的加载耗时较多。...改进的结构大致如下图,其中蓝色部分需要在App启动的时候立即加载: ?...在这种情况下,整个rootViewController都是不需要加载的。

    2.2K92

    React-Native 分包实践

    我们可以在打包的时候直接讲基础文件打包到内部, 在请求线上的业务bundle合并初始化react-native,对于在rn初始化 如果还有新业务的话 也可以直接加载业务代码b 通过bridge enqueueApplicationScript...*rootViewController = [UIViewController new];   rootViewController.view = reactView; self.window.rootViewController...对于需要异步加载的模块,我们可以扩展Native Module方式增加异步加载功能,同时修改RCTbridge暴露enqueueApplicationScript接口来将加载的source运行到javascript...onComplete:^(NSError *scriptLoadError) { [self runModule:moduleName]; }]; }]; } } @end 调用的话相应的要使用...这样我们就基本完成了拆分工作,保证加载的bundle文件最小化。react-native自身需要加载多模块的话 也可以通过这样的方式调用直接注入到jscontext运行。

    3.5K60

    iOS面试题:UIWindow,UIView,CALayer的区别

    *rootViewController NS_AVAILABLE_IOS(4_0); // default is nil @end 继承自UIView,是一种特殊的 UIView,通常在一个app中只会有一个...iOS程序启动完毕,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 主要作用是提供一个区域用来显示...UIView;将事件分发给UIView;与UIViewController一起处理屏幕的旋转事件。...在创建UIView时,它内部会自动创建一个图层,当UIView需要显示在屏幕上的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制到自己的图层上,绘图完毕,系统会将图层拷贝到屏幕上,这样完成...layer给view提供了基础设施,使得绘制内容和呈现更高效动画更容易、更低耗 layer不参与view的事件处理、不参与响应链 *** 更多:iOS面试题合集

    81330

    UINavigationController 导航控制器概念属性方法

    @property(nullable, nonatomic,readonly,strong) UIViewController *topViewController; 2、获取当前界面显示的controller...,带动画效果 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe; 11、 弹出键盘的时候是否隐藏导航栏 @property (...initWithNavigationBarClass:(nullable Class)navigationBarClass toolbarClass:(nullable Class)toolbarClass; (2)使用系统默认的导航栏和工具栏...,创建一个导航控制器同时设置一个根视图控制器 - (instancetype)initWithRootViewController:(UIViewController *)rootViewController...继承该父类的控制器调用此方法都可以隐藏push来的控制器底部的TabBar - (void)pushViewController:(UIViewController *)viewController animated

    2.1K60

    iOS-UIWindow详解

    iOS程序启动完毕,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。...因此,当系统加载完info.plist,判断后发现没有main,就不会加载storyboard,也就不会帮我们创建UIWindow,那么我们需要自己在程序启动完成的时候也就是在didFinishLaunchingWithOptions...*rootVc = [[UIViewController alloc]init]; self.window.rootViewController = rootVc; //显示窗口...我们来看一下[self.window makeKeyAndVisible];的底层实现了哪些功能 可以显示窗口 成为应用程序的主窗口 当我们不调用这个方法,打印self.window。...,当层级相同时,越靠后调用显示在外面。

    1.9K40
    领券