|
@@ -10,17 +10,6 @@ class QRPageController: UIPageViewController {
|
|
|
|
|
|
private var selectedIndex: Int = 0
|
|
private var selectedIndex: Int = 0
|
|
|
|
|
|
- private lazy var qrController: QrViewController = {
|
|
|
|
- let controller = QrViewController(dcContext: dcContext)
|
|
|
|
- return controller
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- private lazy var qrCodeReaderController: QrCodeReaderController = {
|
|
|
|
- let qrReader = QrCodeReaderController()
|
|
|
|
- qrReader.delegate = self
|
|
|
|
- return qrReader
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
private lazy var qrSegmentControl: UISegmentedControl = {
|
|
private lazy var qrSegmentControl: UISegmentedControl = {
|
|
let control = UISegmentedControl(items: ["Show Left", "Show Right"])
|
|
let control = UISegmentedControl(items: ["Show Left", "Show Right"])
|
|
control.tintColor = DcColors.primary
|
|
control.tintColor = DcColors.primary
|
|
@@ -60,6 +49,8 @@ class QRPageController: UIPageViewController {
|
|
dataSource = self
|
|
dataSource = self
|
|
delegate = self
|
|
delegate = self
|
|
navigationItem.titleView = qrSegmentControl
|
|
navigationItem.titleView = qrSegmentControl
|
|
|
|
+
|
|
|
|
+ let qrController = makeQrViewController()
|
|
setViewControllers(
|
|
setViewControllers(
|
|
[qrController],
|
|
[qrController],
|
|
direction: .forward,
|
|
direction: .forward,
|
|
@@ -71,11 +62,25 @@ class QRPageController: UIPageViewController {
|
|
// MARK: - actions
|
|
// MARK: - actions
|
|
@objc private func qrSegmentControlChanged(_ sender: UISegmentedControl) {
|
|
@objc private func qrSegmentControlChanged(_ sender: UISegmentedControl) {
|
|
if sender.selectedSegmentIndex == 0 {
|
|
if sender.selectedSegmentIndex == 0 {
|
|
|
|
+ let qrController = makeQrViewController()
|
|
setViewControllers([qrController], direction: .reverse, animated: true, completion: nil)
|
|
setViewControllers([qrController], direction: .reverse, animated: true, completion: nil)
|
|
} else {
|
|
} else {
|
|
|
|
+ let qrCodeReaderController = makeQRReader()
|
|
setViewControllers([qrCodeReaderController], direction: .forward, animated: true, completion: nil)
|
|
setViewControllers([qrCodeReaderController], direction: .forward, animated: true, completion: nil)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // MARK: - factory
|
|
|
|
+ private func makeQrViewController() -> QrViewController {
|
|
|
|
+ let controller = QrViewController(dcContext: dcContext)
|
|
|
|
+ return controller
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private func makeQRReader() -> QrCodeReaderController {
|
|
|
|
+ let qrReader = QrCodeReaderController()
|
|
|
|
+ qrReader.delegate = self
|
|
|
|
+ return qrReader
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// MARK: - UIPageViewControllerDataSource, UIPageViewControllerDelegate
|
|
// MARK: - UIPageViewControllerDataSource, UIPageViewControllerDelegate
|
|
@@ -84,12 +89,12 @@ extension QRPageController: UIPageViewControllerDataSource, UIPageViewController
|
|
if viewController is QrViewController {
|
|
if viewController is QrViewController {
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
- return qrController
|
|
|
|
|
|
+ return makeQrViewController()
|
|
}
|
|
}
|
|
|
|
|
|
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
|
|
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
|
|
if viewController is QrViewController {
|
|
if viewController is QrViewController {
|
|
- return qrCodeReaderController
|
|
|
|
|
|
+ return makeQRReader()
|
|
}
|
|
}
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
@@ -109,9 +114,7 @@ extension QRPageController: UIPageViewControllerDataSource, UIPageViewController
|
|
extension QRPageController: QrCodeReaderDelegate {
|
|
extension QRPageController: QrCodeReaderDelegate {
|
|
|
|
|
|
func handleQrCode(_ code: String) {
|
|
func handleQrCode(_ code: String) {
|
|
- qrCodeReaderController.dismiss(animated: true) {
|
|
|
|
- self.processQrCode(code)
|
|
|
|
- }
|
|
|
|
|
|
+ self.processQrCode(code)
|
|
}
|
|
}
|
|
|
|
|
|
private func processQrCode(_ code: String) {
|
|
private func processQrCode(_ code: String) {
|