当前位置: 首页 > 面试题库 >

AlertController不在窗口层次结构中

慕麒
2023-03-14
问题内容

我刚刚用ViewController类创建了一个单视图应用程序项目。我想显示一个位于我自己的类中的函数的UIAlertController。

这是我的课程,带有警告。

class AlertController: UIViewController {
     func showAlert() { 
         var alert = UIAlertController(title: "abc", message: "def", preferredStyle: .Alert)
         self.presentViewController(alert, animated: true, completion: nil)
     }
}

这是执行警报的ViewController。

class ViewController: UIViewController {
   override func viewDidLoad() {
       super.viewDidLoad()  
   }

   @IBAction func showAlertButton(sender: AnyObject) {
       var alert = AlertController()
       alert.showAlert()
   }
}

这是我得到的,而不是优美的警报。

警告:尝试在Sprint1.AlertController:0x797cc500上显示其视图不在窗口层次结构中的UIAlertController:0x797d2d20!

我该怎么办?


问题答案:

如果UIAlertController要从模态控制器实例化,则需要在viewDidAppear中而不是在中进行,viewDidLoad否则会出现错误。

这是我的代码(Swift 4):

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let alertController = UIAlertController(title: "Foo", message: "Bar", preferredStyle: .alert)

    alertController.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
    present(alertController, animated: true, completion: nil)
}


 类似资料:
  • 问题内容: 我正在尝试呈现数据模型中 是否 有任何保存的数据。但我收到以下错误: 警告:尝试在其视图不在窗口层次结构中显示 相关代码: 我尝试过使用Google找到的其他解决方案,但均未成功。 问题答案: 此时,在代码中,视图控制器的视图仅已创建,尚未添加到任何视图层次结构中。如果您想尽快从该视图控制器中进行显示,则应确保最安全。

  • 在Tableau中,可以构建层次结构以可视化数据。可以通过以下步骤在Tableau中创建它: 例如,考虑数据源,例如Sample-Superstore,以及它的维度和度量。 第1步: 首先转到工作表。然后, 选择一个维度,然后右键单击该维度以创建层次结构。 转到“层次结构(Hierarchy)”选项。 并且,单击下面屏幕截图中显示的“创建层次结构(Create Hierarchy)”选项。 第2步

  • 我使用ProGuard混淆了我的代码。在代码中,我希望用下面的代码从指定的包中读取所有类。 com/test/ui/controller/b.class com/test/ui/controller/d.类 当我用一个未混淆的jar运行相同的代码时,下面是输出。包级别保存在jar中。你知道我如何告诉Proguard通过保持包级别来创建jar吗? com/test/ui/controller/d.类

  • 零售商店的正确模式是什么?公司从商店销售产品。 这似乎违反了我对OOP所知的全部知识。通过层次结构向下传递数据的方法--在对象之间复制参数?我错过了什么?

  • 本规范定义了一个用于部署和打包用途的,可存在于开放文件系统、归档文件或一些其他形式中的层次结构。建议 servlet 容器支持这种结构作为运行时表示形式,但不是必须的.

  • 我有这样的层次结构: 因此,用户可以添加他的工作经验。此外,他还可以为特定的项目添加角色。 我想为用户id 1获取项目,但项目之间只有关系 获取用户 获得工作经验 获取角色 获取项目 因此,如果我有更多不同工作经验的角色,我就必须提出20个请求才能得到我的项目。这不是很有效率吗?我必须加载一些不必要的数据。。。 是否可以只创建endpoint:并按用户ID过滤它? 应该如何在API上管理它?对我来