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

警告:尝试在视图不在窗口层次结构中的ViewController上显示ViewController (w/ UIAlertController)

这个警告是由于在视图层次结构中尝试在一个不可见的视图控制器上显示另一个视图控制器(包含UIAlertController)而引起的。这通常是由于在视图控制器的生命周期中的错误时机或错误的方法调用导致的。

为了解决这个警告,可以采取以下步骤:

  1. 确保在正确的时机和正确的方法中显示视图控制器。通常,在视图控制器的生命周期方法中,如viewDidLoad、viewWillAppear或viewDidAppear中显示其他视图控制器是安全的。
  2. 确保在正确的视图层次结构中显示视图控制器。如果要在当前视图控制器上显示另一个视图控制器,确保当前视图控制器已经添加到窗口的视图层次结构中。
  3. 检查代码中的逻辑错误。确保没有在不可见的视图控制器上显示另一个视图控制器的代码。

总结: 警告"尝试在视图不在窗口层次结构中的ViewController上显示ViewController (w/ UIAlertController)"是由于在不可见的视图控制器上显示另一个视图控制器而引起的。为了解决这个问题,需要确保在正确的时机和正确的方法中显示视图控制器,并确保当前视图控制器已经添加到窗口的视图层次结构中。

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

相关·内容

iOS学习——获取当前最顶层的ViewController

在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...,或者在最顶层的ViewController上present另一个ViewController,或者进行其他操作。...在寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...作为导航结构,以及可能present出新的VC,其实如果用storyboard的方式写UI的话就很清晰,类似树的结构,再利用递归找到当前视图。...) UIViewController * _Nullable currentVC; //当前屏幕显示的viewcontroller -(UIViewController *)currentVC{ UIViewController

6.7K50
  • iOS开发常用之 HUD 弹窗

    MMProgressHUD - 设置HUD出现和消失的方式(包括上下,左右,淡入淡出,放大缩小等等),设置HUD的内容(可以在HUD中加入帧动画,动态图片等等),设置HUD出现时的底部覆盖层颜色,等等...DQAlertView - 扁平化的样式不错。 HHAlertView - 一个简单的alertview有三种样式,有成功,失败,和警告三种样式,支持代表和阻止两种回调。...STModalDemo - 弹出视图(通知,提示,选择,窗口)。...PCLBlurEffectAlert.swfit - 细节定制较丰富的弹出警报窗口组件。...CustomPopOverView - 自定义弹出视图,内容支持传一组菜单标题,也支持自定义view,或者自定义viewController,支持任意按钮触发,会显示在按钮底部,也支持切换按钮的对齐方式

    4.3K20

    IOS开发之视图和视图控制器

    视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。...UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示。...窗口是用来显示视图的,下面我们将会结合着实例来具体的学习一下IOS中的View和ViewController         1.首先我们需要建一个EmptyProject来测试我们的View和ViewController...我们空工程的文件结构如下,我们只需在AppDelegate.m中添加我们的视图,还是那句话为了更好的理解我们的视图,所有视图的创建和配置我们都用代码编写。 ?         ...视图层大致分为下面的几类         1.容器视图                 容器视图用于增强其他视图的功能,或者为视图内容提供额外的视觉分隔,比如UIScorllView类用于显示因内容太大而无法显示在一个屏幕上的视图

    1.8K70

    iOS14开发-UIViewController

    介绍 UIViewController 可以理解为 App 的界面,负责管理 UIView 中显示的内容和用户的交互,主要有以下作用: 负责创建和管理 UIView。 响应用户与视图的交互。...被代理对象(需要传值的 UIViewController) 声明协议,在协议中定义传值方法,方法的参数个数与类型取决于需要传值的个数和类型。 UIViewController 中声明一个代理属性。...接收值的 UIViewController 实现需要传值的 UIViewController 中的闭包属性,在闭包的实现中拿到传过来的值进行使用。...常见ViewController UIAlertController 警告(对话框)控制器。 用一个对话框进行信息的提示,通过模态形式弹出。 有两种样式:alert和actionSheet。...UINavigationItem是 UIViewController 的属性,用于配置当前 UIViewController 显示时UINavigationBar上显示的内容。

    2.4K20

    Mac开发跬步积累(六): 响应链NSResponder Chain

    对于键盘事件, 响应是从窗口的第一响应者开始; 对于鼠标/触控板事件,响应是从用户操作的view开始; 如果事件消息在最初没有响应,那么响应链将按照视图的层级结构依次传递消息,直到窗口对象(NSWindow...;它通常是整个响应链中的第一个响应者对象,NSWindow对象的最初始第一响应者是它自己,当window显示在屏幕上时,也可以手动设定它的第一响应者对象(使用NSWindow对象的makeFirstResponder...在ViewController中实现键盘按下事件/鼠标点击事件 并在视图加载完毕后,输出响应链信息: ?...显然ViewController中我们已经实现了keyDown:方法;在回答这个问题之前,我们先看一下网络上普遍关于NSViewController监听键盘事件的方法:使用NSEvent添加本地事件监听...窗口的第一响应者 根据控制台信息,我们可以看出键盘事件的第一响应者是当前窗口对象NSWindow,在键盘事件的整个响应链中,ViewController是被忽略的,所以ViewController中的

    2.4K10

    iOS学习——UIAlertController详解

    在开发中,弹出提示框是必不可少的。...UIAlertController是在iOS8.0中出现的一种统一的提示风格的界面,代替原来的UIAlertView和UIActionSheet两种类别。...UIAlertController提示器的使用分为三步,创建UIAlertController提示器对象-->配置UIAlertController提示器上的按钮-->显示UIAlertController...上添加文本框   上面我们讲到了如何在UIAlertController提示器上添加按钮,但是有时候,我们需要在提示器上添加一个或多个文本框让用户填写一些信息,在UIAlertController中也提供了一个方法直接可以在提示器上添加文本框...提示器的显示   UIAlertController提示器的显示则很简单,从提示器的类名UIAlertController可以看出,提示器是一个viewController,因此,要显示提示器,我们一般是是当前

    3.4K170

    【IOS开发基础系列】Storyboard专题

    因为所有的窗口设计在一个故事板文件中,你会更容易把握每次改动带给每个窗口的变化。     2、在故事板中可以描述各个窗口之间的转换。这种转换叫做 segue(连接)。...2 使用 2.1 结合xib使用     思路:         APP跳转流程在故事板中呈现,但是VC的事件处理与详细视图设计放在xib文件中。     ...以这种方式,你可以创建超过 5 个的ViewController 给TabBarController,它将自动在Tabbar 上显示 More... 按钮。...在文档树中这些关系显示如图中所示:         注意 TableViewController 上被加入了一个navigationBar。...在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。

    1.3K30

    Mac开发跬步积累(二):NSViewController 转场动画精耕细作

    内嵌在同一个窗口中形式弹出新的ViewController open func presentViewControllerAsSheet(_ viewController: NSViewController...transition方法仅支持有父子关系的控制器结构. transition由父控制器super ViewController进行调用....从Storyboard中的CustomView 连线的控件属性,用来作为容器视图,显示每个ChildViewController的内容 @IBOutlet weak var containView...动画效果 Summary(总结) 在macOS中,控制器的转场切换无论是presentViewController方式或者transition方式,本质上都是将要显示的控制器视图View,通过addSubView...自定义present 动画时,需要注意事件穿透问题: 由于显示出来的控制器视图(Controller View)是通过addSubView方式添加到容器视图中,因此在控制器视图(Controller

    2.8K40

    Mac 开发之 做一个JSON转模型属性的小公举

    ,然而这种新的插件方式制作的插件,在运行时与Xcode不在同一个进程,因此失去了原来许多便捷的地方(当然,安全性更好了,这是一个取舍的结果) 基于上面的原因,加上继续学习Mac开发的练习,我们可以手动尝试自己做个工具...为了对错误结果有个更好的提示,在工程中,我们引入了DJProgressHUD框架(类似iOS中的HUD效果),GitHub的下载地址是DJProgressHUD ,有兴趣的可以读一下源码,对学习Mac...由于窗口有两个水平方向的文本视图,因此我把窗口的最小初始化size设置为(900,323),这样整个界面看起来是一个水平的长方形,便于操作和阅读 设置window的最小size 3....在StoryBoard中设置视图的controller为ViewController,这样我们就可以通过ViewController类来管理控制器和view了 设置视图控制器类型ViewController...选中ViewController.m文件,进行视图初始化设置 初始化设置 这里有个细节需要注意: 在Mac OSX中,使用NSTextView控件进行文本输入时,系统会自动将英文的双引号变为中文的双引号

    1.1K20

    Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(一)

    添加图片资源到项目工程中 如果没有出错,运行项目,你应该看到一个空的窗口,而且在屏幕的右上角已经出现了我们应用的常驻标志^_^,是不是感觉很容易啊~ ?...项目运行结果 这时你点击状态栏上的图标,它没有任何反应,因为我们还没有给它添加事件响应的方法。我们希望点击它能够弹出一个视图,显示它的内容或者功能,下面我们就来接着实现它。...NSPopover 提供了在屏幕内容视图上显示额外信息内容的一种方式(其实这个类似于在iPad开发中是常见的UIPopoverPresentationController),它的定位相对与现有内容。...在ViewController中添加popover属性,并在viewDidLoad中进行初始化和配置。 1.4 现在ViewController.m实现代码: ?...设置contentViewController 现在再次运行工程,如果没有错误,我们就可以看到大致类似下面的这样界面了,这样我们就实现了可以在系统状态栏中添加应用的常驻标志,点击它,并可以弹出一个内容展示窗口了

    2.3K20

    史上最详细的iOS之事件的传递和响应机制-原理篇

    你如果是在viewController.m文件中重写touchBegan:withEvent:方法,相当于处理的是viewController的触摸事件,因为viewController也是继承自UIResponder...主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,这也是整个事件处理过程的第一步。 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理。...3.窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件。(至此,第一步已完成) ?...如果当前view是控制器的view,那么控制器就是上一个响应者,事件就传递给控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件就传递给它的父视图 2>在视图层次结构的最顶级视图...2.UIApplication会从事件队列中取出最前面的事件,把事件传递给应用程序的主窗口(keyWindow)。   3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件。

    11.4K70

    iOS开发系列——Storyboard

    到目前为止我们还没有解释我们的程序是如何显示默认视图界面的。...: a.png 在这个界面中整个核心就是右侧视图控制器ViewController,在ViewController中有一个视图UIView,这个视图用来放置其他用户操作控件。...视图控制器左侧的箭头表示这个视图控制器是个主视图控制器,程序启动之后默认就会直接显示这个视图控制器的视图。我们可以在项目属性中通过修改“Main Interface”属性来修改主视图控制器。...(在Interface Builder中点击左下角“Show Document outline”显示控件结构树,选中相应的控件按住Ctrl键拖拽到代码中的属性或方法上) e.gif 3....(在Interface Builder中点击左下角Show Document outline显示控件结构树,选中相应的控件右键拖拽到代码中的属性或方法上) 5.对于前面几种方法其实我们还可以直接从代码拖拽到控件上面

    3.4K40

    【IOS开发基础系列】UIViewController专题

    当程序的一部分向controller请求view的指针且view不在内存中时,view会进入加载循环,controller会将view加载入内存。         ...当程序接收到内存警告时,controller会尝试卸载view,在卸载循环中,controller尝试释放它的view对象并返回到原始的无view状态(当它不在屏幕上显示时,这个条件的判断到底是根据view...如果你的ViewController保存着view的子view的引用,那么,在早期的iOS版本中,你应该在这个函数中来释放这些引用。...,比如在转场过程中所参与的视图控制器和视图的相关属性。...在现在的SDK中,如果当前的VC是被显示的话,这个消息会被直接转发到显示它的VC去。但是这并不是一个好的实现,违反了程序设计的哲学,也很容易掉到坑里,具体案例可以参看这篇文章的评论。

    73230

    ViewController及View的生命周期1. 起因2. Controller的生命周期3. View的生命周期4. 内存警告

    这让永远都只在viewDidLoad写作的童鞋们情何以堪吶。 这些其实都和生命周期有关,和viewController以及view的各种加载顺序有关。这篇文章就小小撸一下这中间的关系和顺序。 2....下面做一个小测试,打印在不同方法执行的过程中,界面的长宽属性如何,结果如下: //viewDidLoad w:320.000000 h:568.000000 //viewWillAppear w:...- (void)didMoveToWindow; 某个视图的层次一改变,该视图就会收到一次回调。...didMoveToSuperview:会通知相关视图他们的上级视图已经变化。添加和移除都会调用,所以要判断 superView在不在。...willMoveToWindow:在视图移动前发出的回调。 willRemoveToSubview:回调通知父视图子视图即将被删除 4. 内存警告 首先要判断一下,当前view有没有被显示。

    1.5K30

    iPad Safari多窗口视图分析和实现思路

    在手机上,由于屏幕空间有限,点击窗口管理的按钮可以看到手机上采用了一种视图层叠的效果,有点模拟从一个实体文件夹中翻查文件的感觉。...[iPhone Safari 的多窗口管理] 而在iPad 上,同样的按钮打开的视图是一个大纲视图,所有的网页窗口平铺展示,就像桌面平台的多窗口管理 [iPad 上 Safari 的多窗口管理] 我们再认真观察一下...另外我们可以看到缩略图的顶部有一个标题栏和一个关闭按钮,在双指缩放放大的过程中我们可以看到一个临界点,超过这个临界点的时候标题栏会渐隐,露出原本页面截图顶部的搜索栏和标签栏。...具体来说,从某个具体页面切换到大纲视图之前,对页面做一个截图,ScrollView 中也不再加载具体的 ViewController 的 view 而是仅放置静态截图。...从 Safari 的表现来看它极有可能也是采用截图的方式,我们实测网页中动态播放的视频到了大纲视图并不会继续动态播放,此外 Safari 在进程被杀后重启,大纲视图里仍有之前的截图,可以推测是通过静态截图的并落地的方式实现

    4.1K30

    大前端开发中的路由管理之四:iOS篇

    1、iOS上的页面展示和逻辑 1.1 iOS的MVC设计模式         在介绍iOS的页面展示之前,我们需要先知道iOS应用的运行逻辑和设计模式。...View上展示的东西,由Model来定义 View上展示的逻辑,由Controller来控制 Controller同样负责初始化Model,和传递Model的信息给View         用户在View...,UITabBarController         其中,容器类ViewController是这篇文章关注的重点,因为他们管理着View的显示逻辑。         ...应用默认的UINavigationController的第一个view controller是根视图控制器,即 root view controller,放在stack的最底层,最新的在最高层。...一张图概括NavigationController的结构 3.2 通用的页面切换方式         容器类的ViewController通过一个特定的结构来实现多层级管理,但并不是所有页面都能确保是在同一个容器中

    1.9K40
    领券