From fd8932422060afdfd199bf47ce48deaf72557791 Mon Sep 17 00:00:00 2001 From: dahun-lee-daji Date: Thu, 17 Jun 2021 14:40:46 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20IssueCoordinator=EC=97=90=20pushImagePi?= =?UTF-8?q?ckerView=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84(#61)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IssueList/IssueCoordinator.swift | 8 ++++++- .../IssueList/IssueListViewController.swift | 7 ++++-- .../NewIssue/IssueEditViewController.swift | 13 ++++------- iOS/issue-tracker/Photo/ImagePicker.swift | 22 +++++++++---------- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/iOS/issue-tracker/IssueList/IssueCoordinator.swift b/iOS/issue-tracker/IssueList/IssueCoordinator.swift index 522dc734f..3e457d9af 100644 --- a/iOS/issue-tracker/IssueList/IssueCoordinator.swift +++ b/iOS/issue-tracker/IssueList/IssueCoordinator.swift @@ -26,7 +26,13 @@ class IssueCoordinator: NSObject, Coordinator { func pushEditView() { let issueEditVC = UIStoryboard(name: StoryBoardName.IssueEdit.description, bundle: nil) .instantiateViewController(withIdentifier: IssueEditViewController.reuseIdentifier) as! IssueEditViewController - + issueEditVC.coordinator = self navigationController.pushViewController(issueEditVC, animated: true) } + + func pushImagePickerView() { + let imagePickerDelegate = ImagePickerDelegate() + let imagePicker = ImagePicker.init(presentationController: self.navigationController, delegate: imagePickerDelegate) + self.navigationController.present(imagePicker.pickerController, animated: true, completion: nil) + } } diff --git a/iOS/issue-tracker/IssueList/IssueListViewController.swift b/iOS/issue-tracker/IssueList/IssueListViewController.swift index 8aae795e7..c3b462213 100644 --- a/iOS/issue-tracker/IssueList/IssueListViewController.swift +++ b/iOS/issue-tracker/IssueList/IssueListViewController.swift @@ -9,10 +9,13 @@ import UIKit class IssueListViewController: UIViewController, ReuseIdentity { - weak var coordinator: IssueCoordinator? + weak var coordinator: Coordinator? @IBAction func pushToEditView(_ sender: Any) { - coordinator?.pushEditView() + guard let issueCoordinator = coordinator as? IssueCoordinator else { + return + } + issueCoordinator.pushEditView() } override func viewDidLoad() { diff --git a/iOS/issue-tracker/NewIssue/IssueEditViewController.swift b/iOS/issue-tracker/NewIssue/IssueEditViewController.swift index cfd550775..f57be2211 100644 --- a/iOS/issue-tracker/NewIssue/IssueEditViewController.swift +++ b/iOS/issue-tracker/NewIssue/IssueEditViewController.swift @@ -16,8 +16,6 @@ class IssueEditViewController: UIViewController, ReuseIdentity { private var tableDelegate = AdditionalTableDelegate() private var tableDataSource = AdditionalTableViewDataSource() - private lazy var photoPicker = ImagePicker(presentationController: self, delegate: self) - override func viewDidLoad() { super.viewDidLoad() @@ -42,7 +40,10 @@ class IssueEditViewController: UIViewController, ReuseIdentity { @objc func insertPhoto() { - self.photoPicker.present() + guard let issueCoordinator = coordinator as? IssueCoordinator else { + return + } + issueCoordinator.pushImagePickerView() } } @@ -54,9 +55,3 @@ extension IssueEditViewController: UITextViewDelegate { } } -extension IssueEditViewController: ImagePickerDelegate { - - func didSelect(image: UIImage?) { - - } -} diff --git a/iOS/issue-tracker/Photo/ImagePicker.swift b/iOS/issue-tracker/Photo/ImagePicker.swift index 0ce102604..f5afb6bab 100644 --- a/iOS/issue-tracker/Photo/ImagePicker.swift +++ b/iOS/issue-tracker/Photo/ImagePicker.swift @@ -7,36 +7,30 @@ import UIKit -public protocol ImagePickerDelegate: AnyObject { +public protocol ImagePickerDelegatable: AnyObject { func didSelect(image: UIImage?) } + class ImagePicker: NSObject { - private let pickerController: UIImagePickerController - private weak var presentationController: UIViewController? - private weak var delegate: ImagePickerDelegate? + let pickerController: UIImagePickerController + private weak var delegate: ImagePickerDelegatable? - public init(presentationController: UIViewController, delegate: ImagePickerDelegate) { + public init(presentationController: UIViewController, delegate: ImagePickerDelegatable) { self.pickerController = UIImagePickerController() super.init() - self.presentationController = presentationController self.delegate = delegate self.pickerController.delegate = self self.pickerController.allowsEditing = true self.pickerController.mediaTypes = ["public.image"] - } private func pickerController(_ controller: UIImagePickerController, didSelect image: UIImage?) { controller.dismiss(animated: true, completion: nil) self.delegate?.didSelect(image: image) } - - func present() { - self.presentationController?.present(pickerController, animated: true) - } } extension ImagePicker: UIImagePickerControllerDelegate { @@ -57,3 +51,9 @@ extension ImagePicker: UIImagePickerControllerDelegate { extension ImagePicker: UINavigationControllerDelegate { } + +class ImagePickerDelegate: ImagePickerDelegatable { + func didSelect(image: UIImage?) { + + } +}