ViewController在其他文件中

时间:2015-11-13 01:48:15

标签: ios swift swift2

我是Swift 2的新手。我试图在另一个文件中创建一个UIAlertController。

这是我的代码:

class my_view_error: UIViewController {

func my_error(my_title: String, my_message: String) {
    let alertController = UIAlertController(title: my_title, message: my_message, preferredStyle: .Alert)
    let OKAction = UIAlertAction(title: "OK", style: .Default) { (action) in }
    alertController.addAction(OKAction)
    self.presentViewController(alertController, animated: true) {}
    } 
}

我收到编译时错误:

  

警告:尝试显示其视图不在窗口层次结构中!

我的问题是,是否可以在ViewController.swift以外的文件中创建ViewController?

1 个答案:

答案 0 :(得分:0)

您创建了一个名为UIViewController的{​​{1}}子类。 my_view_error方法UIViewController期望presentViewController(一个self)在调用方法时显示在屏幕上。

您的my_view_error功能完全正常,但应将其移至实际在屏幕上的视图控制器。无需创建my_error只是为了呈现UIViewController。实际上,UIAlertController UIAlertController,并且不需要自定义视图控制器的帮助。

与任何视图控制器一样,呈现警报的视图控制器必须位于屏幕上才能执行演示。

每个视图控制器可能都有自己的UIViewController文件。但是,无需为.swift创建一个。

这是使用UIAlertController上的rootViewController获取当前屏幕视图控制器的函数的一个版本,然后使用它来显示警报:

UIApplication