QuickDialgはDailogと名付けられているのでモーダルでしか使えないのか?
UINavigationControllerでpushViewControllerしたい。
また、この時、なんとかQuickDialgViewControllerをサブクラス化して、その中でQRootElementを作れないかも試行錯誤してみたが、こっちはちょっと無理っぽい。
単純にQuickDialgのサンプルを参考に以下のようにした。
1.QRootElementはクラス・メソッドで別途作る。
2.上記をrootとして渡してQuickDialogControllerのインスタンスを作り、これをpushViewControllerする。
1.QRootElementはクラス・メソッドで別途作る
QuickDialgのサンプルにならって何たらBuilderのcreateメソッドという名前にする。
Swiftではクラス・メソッドは class func create() と書けばよいらしい。
ExampleQRootBuilder.swift
class ExampleQRootBuilder: NSObject {
class func create() -> QRootElement {
let root = QRootElement()
root.title = "Hello"
root.grouped = true
let section = QSection(title: "Example")
let label = QLabelElement(title: "Hello", value: "Hello!")
root.addSection(section)
section.addElement(label)
return root
}
}
2.QuickDialogControllerとpushViewController
let root = ExampleQRootBuilder.create()
let qdc = QuickDialogController(root: root)
self.navigationController.pushViewController(qdc, animated: true)
QuickDialogControllerはサブクラスにして戻るボタンなどカスタマイズしてもよい。