【发布时间】:2018-12-20 09:30:38
【问题描述】:
我有一个数组 UIButtons,它有一个唯一的 tag 值。当按下给定按钮时,我想加载并呈现一个UIViewController,它也存储在一个等长的数组中。
要呈现的UIViewControllers 是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)
请让我知道这是否是做这种事情的不正确的思考过程,谢谢你的帮助。
【问题讨论】:
标签: ios arrays swift uiviewcontroller presentmodalviewcontroller