ale*_*wis 1 arrays uiviewcontroller presentmodalviewcontroller ios swift
我有一个UIButton具有唯一tag值的数组.当按下给定按钮时,我想加载并呈现一个UIViewController也存储在等长的数组中.
UIViewController要呈现的s是子类的子类UIViewController:
class AViewController: UIViewController {}
class BViewController: AViewController {}
class CViewController: AViewController {}
class DViewController: AViewController {}
// ... etc.
Run Code Online (Sandbox Code Playgroud)
我已经尝试AViewController使用以下内容存储子类数组:
private var array: [AViewController] = [BViewController.self, CViewController.self, DViewController.self]
Run Code Online (Sandbox Code Playgroud)
但我得到错误无法将类型'[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)
Run Code Online (Sandbox Code Playgroud)
请告诉我,如果这是一个不正确的思考过程,请做这样的事情,并感谢您的帮助.
你需要实例
private var array: [AViewController] = [BViewController(), CViewController(), DViewController()]
Run Code Online (Sandbox Code Playgroud)
如果vcs在IB中,那么你会这样做
let b = self.storyboard!.instantiateViewController(withIdentifier: "bID") as! BViewController
let c = self.storyboard!.instantiateViewController(withIdentifier: "cID") as! CViewController
let d = self.storyboard!.instantiateViewController(withIdentifier: "dID") as! DViewController
Run Code Online (Sandbox Code Playgroud)
然后
array = [b,c,d]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |