繁体   English   中英

iOS (Swift) - UIViewControllers 数组

[英]iOS (Swift) - Array of UIViewControllers

我有一个具有唯一tag值的数组UIButton 当按下给定的按钮时,我想加载并呈现一个UIViewController ,它也存储在一个等长的数组中。

将要介绍的UIViewControllerUIViewController子类的子类:

class AViewController: UIViewController {}
class BViewController: AViewController {}
class CViewController: AViewController {}
class DViewController: AViewController {}
// ... etc.

我尝试使用以下方法存储AViewController子类的数组:

private var array: [AViewController] = [BViewController.self, CViewController.self, DViewController.self]

但我收到错误无法将类型“[BViewController].Type”的值转换为第一个元素的指定类型“[AViewController]”

然后,我将使用以下内容呈现BViewController (例如):

let ViewController = array[button.tag].self
var viewController: AViewController
viewController = ViewController.init()
viewController.transitioningDelegate = self
viewController.modalPresentationStyle = .custom
present(viewController, animated: true)

请让我知道这是否是执行此类操作的错误思考过程,并感谢您的帮助。

我有一个具有唯一tag值的数组UIButton 当按下给定的按钮时,我想加载并呈现一个UIViewController ,它也存储在一个等长的数组中。

UIViewController s到呈现的子类的子类UIViewController

class AViewController: UIViewController {}
class BViewController: AViewController {}
class CViewController: AViewController {}
class DViewController: AViewController {}
// ... etc.

我尝试使用以下方法存储AViewController子类的数组:

private var array: [AViewController] = [BViewController.self, CViewController.self, DViewController.self]

但我收到错误无法将类型 '[BViewController].Type' 的值转换为第一个元素的指定类型 '[AViewController]'

然后我将使用以下内容呈现BViewController (例如):

let ViewController = array[button.tag].self
var viewController: AViewController
viewController = ViewController.init()
viewController.transitioningDelegate = self
viewController.modalPresentationStyle = .custom
present(viewController, animated: true)

请让我知道这是否是执行此类操作的错误思考过程,并感谢您的帮助。

我有一个具有唯一tag值的数组UIButton 当按下给定的按钮时,我想加载并呈现一个UIViewController ,它也存储在一个等长的数组中。

UIViewController s到呈现的子类的子类UIViewController

class AViewController: UIViewController {}
class BViewController: AViewController {}
class CViewController: AViewController {}
class DViewController: AViewController {}
// ... etc.

我尝试使用以下方法存储AViewController子类的数组:

private var array: [AViewController] = [BViewController.self, CViewController.self, DViewController.self]

但我收到错误无法将类型 '[BViewController].Type' 的值转换为第一个元素的指定类型 '[AViewController]'

然后我将使用以下内容呈现BViewController (例如):

let ViewController = array[button.tag].self
var viewController: AViewController
viewController = ViewController.init()
viewController.transitioningDelegate = self
viewController.modalPresentationStyle = .custom
present(viewController, animated: true)

请让我知道这是否是执行此类操作的错误思考过程,并感谢您的帮助。

如果要将视图控制器数组存储为常量,则可以使用备用答案。

 struct AppConstant {

       static let yourViewControllers: [AnyClass] = [AViewController.self, 
            BViewController.self, CViewController.self]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM