From 952fc62cca89f583012ecc0e0ea7588b303bd84a Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Sat, 27 May 2023 15:29:47 +0900 Subject: [PATCH 01/11] =?UTF-8?q?[Fix]=20#154=20-=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=84=B8=EB=B6=80=20=EB=B7=B0?= =?UTF-8?q?=EB=93=A4=EC=9D=98=20EmptyView=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=9C=84=EC=B9=98=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/MyPage/VC/InfoVC/ActivityRecordInfoVC.swift | 3 ++- .../Presentation/MyPage/VC/InfoVC/UploadedCourseInfoVC.swift | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordInfoVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordInfoVC.swift index 5abaa988..12d8dd04 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordInfoVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordInfoVC.swift @@ -227,7 +227,8 @@ extension ActivityRecordInfoVC { } emptyView.snp.makeConstraints { make in - make.center.equalToSuperview() + make.centerX.equalToSuperview() + make.centerY.equalTo(view.safeAreaLayoutGuide) make.leading.trailing.equalToSuperview().inset(80) } } diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/UploadedCourseInfoVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/UploadedCourseInfoVC.swift index d30d70a1..b713da69 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/UploadedCourseInfoVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/UploadedCourseInfoVC.swift @@ -229,7 +229,8 @@ extension UploadedCourseInfoVC { make.leading.bottom.trailing.equalToSuperview() } emptyView.snp.makeConstraints { make in - make.center.equalToSuperview() + make.centerX.equalToSuperview() + make.centerY.equalTo(view.safeAreaLayoutGuide) make.leading.trailing.equalToSuperview().inset(80) } } From edb90e6c671c4876c2ebb5d37b5a7941eecfc17b Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Sat, 27 May 2023 16:29:11 +0900 Subject: [PATCH 02/11] =?UTF-8?q?[Fix]=20#154=20-=20=EB=B6=88=EB=9F=AC?= =?UTF-8?q?=EC=98=A4=EA=B8=B0=20EmptyView=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/VC/MyCourseSelectVC.swift | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDiscovery/Views/VC/MyCourseSelectVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDiscovery/Views/VC/MyCourseSelectVC.swift index d397bd9e..127d8e9b 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDiscovery/Views/VC/MyCourseSelectVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDiscovery/Views/VC/MyCourseSelectVC.swift @@ -29,10 +29,11 @@ class MyCourseSelectVC: UIViewController { // MARK: - UI Components private lazy var navibar = CustomNavigationBar(self, type: .titleWithLeftButton).setTitle("불러오기") - private let selectButton = CustomButton(title: "선택하기").setEnabled(false) - - // MARK: - collectionview + private lazy var selectButton = CustomButton(title: "선택하기").setEnabled(false).then { + $0.isHidden = true + } + private lazy var mapCollectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical @@ -45,6 +46,11 @@ class MyCourseSelectVC: UIViewController { return collectionView }() + private lazy var emptyView = ListEmptyView(description: "공유할 수 있는 코스가 없어요!\n코스를 그려주세요!", + buttonTitle: "코스 그리기").then { + $0.setImage(ImageLiterals.imgPaper, size: CGSize(width: 189, height: 169)) + } + // MARK: - Constants final let collectionViewInset = UIEdgeInsets(top: 28, left: 16, bottom: 28, right: 16) @@ -75,11 +81,14 @@ extension MyCourseSelectVC { private func setData(courseList: [Course]) { self.courseList = courseList mapCollectionView.reloadData() + self.emptyView.isHidden = !courseList.isEmpty + self.selectButton.isHidden = courseList.isEmpty } - + private func setDelegate() { mapCollectionView.delegate = self mapCollectionView.dataSource = self + emptyView.delegate = self } private func register() { @@ -117,11 +126,13 @@ extension MyCourseSelectVC { private func setUI() { view.backgroundColor = .w1 self.tabBarController?.tabBar.isHidden = true + self.emptyView.isHidden = true } private func setLayout() { view.addSubviews(selectButton, mapCollectionView) self.view.bringSubviewToFront(selectButton) + mapCollectionView.addSubview(emptyView) selectButton.snp.makeConstraints { make in make.leading.trailing.equalTo(view.safeAreaLayoutGuide).inset(16) @@ -134,6 +145,11 @@ extension MyCourseSelectVC { make.leading.trailing.equalTo(view.safeAreaLayoutGuide) make.bottom.equalTo(selectButton.snp.top).inset(-25) } + + emptyView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(view.safeAreaLayoutGuide) + } } } // MARK: - UICollectionViewDelegate, UICollectionViewDataSource @@ -236,3 +252,11 @@ extension MyCourseSelectVC { } } } + +// MARK: - Section Heading + +extension MyCourseSelectVC: ListEmptyViewDelegate { + func emptyViewButtonTapped() { + self.tabBarController?.selectedIndex = 0 + } +} From 38a01ebfef33cf89c80a1e7e1a49b85b17d38a30 Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Sat, 27 May 2023 16:39:53 +0900 Subject: [PATCH 03/11] =?UTF-8?q?[Fix]=20#154=20-=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=9D=B4=ED=9B=84=20=EB=94=94=ED=85=8C?= =?UTF-8?q?=EC=9D=BC=EB=B7=B0=EC=97=90=20=EB=B0=94=EB=A1=9C=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/CourseDetail/VC/CourseDetailVC.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift index 48a252e3..cbddbe0b 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift @@ -113,6 +113,9 @@ final class CourseDetailVC: UIViewController { setUI() setLayout() setAddTarget() + } + + override func viewWillAppear(_ animated: Bool) { getUploadedCourseDetail() } } From 25a713a3bdc2f51d0c92aba99662855c3d74a60e Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Mon, 29 May 2023 22:44:08 +0900 Subject: [PATCH 04/11] =?UTF-8?q?[Fix]=20#154=20-=20=EB=82=B4=20=EB=9F=AC?= =?UTF-8?q?=EB=8B=9D=20=EA=B8=B0=EB=A1=9D=20=EC=A0=9C=EB=AA=A9=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=A3=BC=EC=84=9D=20=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이런.. --- .../Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift index 07988475..7eb07bb9 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift @@ -186,7 +186,7 @@ extension ActivityRecordDetailVC { } @objc private func finishEditButtonDidTap() { -// editRecordTitle() + editRecordTitle() showToast(message: "제목 수정이 완료되었어요") // 수정이 완료되면 팝업 뜨지 않음 From 71bd2885663e44146c85c30d82a129ecda309a09 Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Mon, 29 May 2023 22:58:17 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[Fix]=20#154=20-=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=ED=8E=B8=ED=95=98=EA=B2=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/CourseDetail/VC/CourseDetailVC.swift | 8 +++++--- .../Presentation/CourseDetail/VC/CourseEditVC.swift | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift index cbddbe0b..4913709a 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift @@ -83,9 +83,9 @@ final class CourseDetailVC: UIViewController { $0.font = .h4 } - private let courseDistanceInfoView = CourseDetailInfoView(title: "거리", description: "0.0km") + private let courseDistanceInfoView = CourseDetailInfoView(title: "거리", description: String()) - private let courseDepartureInfoView = CourseDetailInfoView(title: "출발지", description: "위치") + private let courseDepartureInfoView = CourseDetailInfoView(title: "출발지", description: String()) private lazy var courseDetailStackView = UIStackView(arrangedSubviews: [courseDistanceInfoView, courseDepartureInfoView]).then { $0.axis = .vertical @@ -113,9 +113,11 @@ final class CourseDetailVC: UIViewController { setUI() setLayout() setAddTarget() + self.hideTabBar(wantsToHide: true) } override func viewWillAppear(_ animated: Bool) { + self.hideTabBar(wantsToHide: true) getUploadedCourseDetail() } } @@ -240,7 +242,7 @@ extension CourseDetailVC { make.height.equalTo(48) } moreButton.snp.makeConstraints { make in - make.trailing.equalTo(self.view.safeAreaLayoutGuide).inset(16) + make.trailing.equalTo(self.view.safeAreaLayoutGuide) make.centerY.equalTo(navibar) } diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift index dcd06a94..7f6722e7 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift @@ -190,28 +190,25 @@ extension CourseEditVC { } } -// MARK: - naviVar Layout +// MARK: - Layout Helpers extension CourseEditVC { private func setNavigationBar() { view.addSubview(navibar) + navibar.snp.makeConstraints { make in make.top.leading.trailing.equalTo(view.safeAreaLayoutGuide) make.height.equalTo(48) } } - // MARK: - setUI private func setUI() { view.backgroundColor = .w1 scrollView.backgroundColor = .clear buttonContainerView.backgroundColor = .w1 mapImageView.backgroundColor = .systemGray4 - } - // MARK: - Layout Helpers - private func setLayout() { view.addSubview(buttonContainerView) view.bringSubviewToFront(editButton) @@ -289,6 +286,8 @@ extension CourseEditVC { } } +// MARK: - UITextViewDelegate + extension CourseEditVC: UITextViewDelegate { func textViewDidBeginEditing(_ textView: UITextView) { if textView.text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { @@ -312,6 +311,7 @@ extension CourseEditVC: UITextViewDelegate { activityTextView.deleteBackward() } } + func textViewDidEndEditing(_ textView: UITextView) { if textView.text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || textView.text == placeholder { activityTextView.textColor = .g3 From e55379b5ab92326e7e4aaf42fc8b7a825bf23770 Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 00:01:32 +0900 Subject: [PATCH 06/11] =?UTF-8?q?[Fix]=20#154=20-=20CourseEdit=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=99=84=EB=A3=8C/=EB=AF=B8=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?=EC=8B=9C=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CourseDetail/VC/CourseEditVC.swift | 97 ++++++++++++++----- .../VC/InfoVC/ActivityRecordDetailVC.swift | 2 +- 2 files changed, 73 insertions(+), 26 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift index 7f6722e7..ade06d03 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift @@ -11,14 +11,19 @@ import SnapKit import Then import Moya -class CourseEditVC: UIViewController { +class CourseEditVC: UIViewController, UITextFieldDelegate { // MARK: - Properties - private let PublicCourseProvider = Providers.publicCourseProvider + private let PublicCourseProvider = Providers.publicCourseProvider + private let courseTitleMaxLength = 20 + private let activityTextMaxLength = 150 var publicCourseId: Int? + var currentTitle: String? + var currentDescription: String? + // MARK: - UI Components private lazy var navibar = CustomNavigationBar(self, type: .titleWithLeftButton).setTitle("") @@ -29,7 +34,7 @@ class CourseEditVC: UIViewController { private let mapImageView = UIImageView().then { $0.image = UIImage(named: "") } - private let courseTitleTextField = UITextField().then { + private lazy var courseTitleTextField = UITextField().then { $0.attributedPlaceholder = NSAttributedString( string: "글 제목", attributes: [.font: UIFont.h4, .foregroundColor: UIColor.g3] @@ -45,17 +50,19 @@ class CourseEditVC: UIViewController { private let departureInfoView = CourseDetailInfoView(title: "출발지", description: "") private let placeholder = "코스에 대한 소개를 적어주세요.(난이도/풍경/지형)" - let activityTextView = UITextView().then { - $0.font = .b4 + private lazy var activityTextView = UITextView().then { + $0.font = .b3 $0.backgroundColor = .m3 $0.tintColor = .m1 $0.textContainerInset = UIEdgeInsets(top: 14, left: 12, bottom: 14, right: 12) } - + // MARK: - Life Cycle override func viewDidLoad() { super.viewDidLoad() + self.courseTitleTextField.delegate = self + self.activityTextView.delegate = self setNavigationBar() setUI() setLayout() @@ -64,6 +71,7 @@ class CourseEditVC: UIViewController { setKeyboardNotification() setTapGesture() addKeyboardObserver() + textViewDidChange(self.activityTextView) } override func viewWillDisappear(_ animated: Bool) { @@ -84,15 +92,21 @@ extension CourseEditVC { self.editButton.addTarget(self, action: #selector(editButtonDidTap), for: .touchUpInside) } + private func setCurrentInfo() { + self.courseTitleTextField.text = self.currentTitle + self.activityTextView.text = self.currentDescription + } + // data 그대로 load하기 func loadData(model: UploadedCourseDetailResponseDto) { mapImageView.setImage(with: model.publicCourse.image) - courseTitleTextField.text = model.publicCourse.title - distanceInfoView.setDescriptionText(description: "\(model.publicCourse.distance ?? 0.0)") + self.currentTitle = model.publicCourse.title + distanceInfoView.setDescriptionText(description: "\(model.publicCourse.distance ?? 0.0)km") let departure = "\(model.publicCourse.departure.region) \(model.publicCourse.departure.city)" departureInfoView.setDescriptionText(description: departure) - activityTextView.text = model.publicCourse.description + self.currentDescription = model.publicCourse.description + setCurrentInfo() } // 키보드가 올라오면 scrollView 위치 조정 @@ -136,16 +150,21 @@ extension CourseEditVC { @objc private func textFieldTextDidChange() { guard let text = courseTitleTextField.text else { return } + self.editButton.isEnabled = !text.isEmpty + if text.count > courseTitleMaxLength { let index = text.index(text.startIndex, offsetBy: courseTitleMaxLength) let newString = text[text.startIndex.. self.activityTextMaxLength { + self.activityTextView.deleteBackward() } - if activityTextView.text.count > 150 { - activityTextView.deleteBackward() + if text == self.currentDescription { + self.editButton.isEnabled = false + } else { + // 수정이 된 상태라면 팝업을 띄워주기 + self.navibar.resetLeftButtonAction({ [weak self] in + self?.presentToQuitEditAlertVC() + }, .titleWithLeftButton) } } @@ -337,7 +384,7 @@ extension CourseEditVC { case .success(let result): let status = result.statusCode if 200..<300 ~= status { - self.navigationController?.popViewController(animated: true) + showToast(message: "게시글 수정이 완료되었어요") } if status >= 400 { print("400 error") diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift index 7eb07bb9..a86ab80a 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift @@ -187,7 +187,6 @@ extension ActivityRecordDetailVC { @objc private func finishEditButtonDidTap() { editRecordTitle() - showToast(message: "제목 수정이 완료되었어요") // 수정이 완료되면 팝업 뜨지 않음 self.navibar.resetLeftButtonAction({ [weak self] in @@ -516,6 +515,7 @@ extension ActivityRecordDetailVC { let status = result.statusCode if 200..<300 ~= status { print("제목 수정 성공") + showToast(message: "제목 수정이 완료되었어요") } if status >= 400 { print("400 error") From ef0e35796166f0537d843b6acfcf6f4eeeed787b Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 00:30:27 +0900 Subject: [PATCH 07/11] =?UTF-8?q?[Fix]=20#154=20-=20=ED=83=88=ED=87=B4=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/CourseDetail/VC/CourseDetailVC.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift index 4913709a..55dd154e 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift @@ -210,7 +210,8 @@ extension CourseDetailVC { self.uploadedCourseDetailModel = model self.mapImageView.setImage(with: model.publicCourse.image) self.profileImageView.image = GoalRewardInfoModel.stampNameImageDictionary[model.user.image] - self.profileNameLabel.text = model.user.nickname + // 탈퇴 유저 처리 + model.user.nickname == "알 수 없음" ? setNullUser() : (self.profileNameLabel.text = model.user.nickname) self.runningLevelLabel.text = "Lv. \(model.user.level)" self.courseTitleLabel.text = model.publicCourse.title self.isMyCourse = model.user.isNowUser @@ -229,6 +230,13 @@ extension CourseDetailVC { moreButton.addTarget(self, action: #selector(moreButtonDidTap), for: .touchUpInside) } + + private func setNullUser() { + self.profileImageView.image = ImageLiterals.imgPerson + self.profileNameLabel.textColor = .g2 + self.profileNameLabel.text = "(알 수 없음)" + self.runningLevelLabel.isHidden = true + } } extension CourseDetailVC { From af5385a766a445cf4331ff0fd6f6f827bf3dc98f Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 00:35:16 +0900 Subject: [PATCH 08/11] =?UTF-8?q?[Fix]=20#154=20-=20=EB=B3=B4=EA=B4=80?= =?UTF-8?q?=ED=95=A8=20=ED=8E=B8=EC=A7=91=20=EB=B2=84=ED=8A=BC=20=EA=B0=84?= =?UTF-8?q?=EA=B2=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/CourseListView/PrivateCourseListView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/Views/CourseListView/PrivateCourseListView.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/Views/CourseListView/PrivateCourseListView.swift index 28bc7694..08256ebd 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/Views/CourseListView/PrivateCourseListView.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/Views/CourseListView/PrivateCourseListView.swift @@ -169,7 +169,7 @@ extension PrivateCourseListView { make.trailing.equalToSuperview().inset(16) make.width.equalTo(47) make.height.equalTo(22) - make.top.equalToSuperview().offset(5) + make.top.equalToSuperview().offset(8) } courseListCollectionView.snp.makeConstraints { make in From 110cfbb887cb4236475800793a9e3acc16580874 Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 00:45:50 +0900 Subject: [PATCH 09/11] =?UTF-8?q?[Fix]=20#154=20-=20=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=EC=95=BD=EA=B4=80=20=EB=A7=81=ED=81=AC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/MyPage/VC/SettingVC/SettingVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/SettingVC/SettingVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/SettingVC/SettingVC.swift index f2771c06..77f959f0 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/SettingVC/SettingVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/SettingVC/SettingVC.swift @@ -26,7 +26,7 @@ final class SettingVC: UIViewController { let reportUrl = NSURL(string: "https://docs.google.com/forms/d/e/1FAIpQLSek2rkClKfGaz1zwTEHX3Oojbq_pbF3ifPYMYezBU0_pe-_Tg/viewform") lazy var reportSafariView: SFSafariViewController = SFSafariViewController(url: self.reportUrl! as URL) - let termsOfServiceUrl = NSURL(string: "https://www.notion.so/Runnect-81cf5a3a507b40e4b6104b5d08f12792?pvs=4") + let termsOfServiceUrl = NSURL(string: "https://third-sight-046.notion.site/Runnect-5dfee19ccff04c388590e5ee335e77ed") lazy var termsOfServiceSafariView: SFSafariViewController = SFSafariViewController(url: self.termsOfServiceUrl! as URL) private lazy var personalInfoView = makeInfoView(title: "계정 정보").then { From 4f83056451976bf7dee406d0a5f3a4def5586869 Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 01:34:50 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[Fix]=20#154=20-=20CourseEdit=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CourseDetail/VC/CourseEditVC.swift | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift index ade06d03..4ccde03c 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift @@ -11,7 +11,7 @@ import SnapKit import Then import Moya -class CourseEditVC: UIViewController, UITextFieldDelegate { +class CourseEditVC: UIViewController { // MARK: - Properties @@ -61,8 +61,7 @@ class CourseEditVC: UIViewController, UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() - self.courseTitleTextField.delegate = self - self.activityTextView.delegate = self + setDelegate() setNavigationBar() setUI() setLayout() @@ -87,6 +86,11 @@ class CourseEditVC: UIViewController, UITextFieldDelegate { // MARK: - Methods extension CourseEditVC { + private func setDelegate() { + self.courseTitleTextField.delegate = self + self.activityTextView.delegate = self + } + private func setAddTarget() { self.courseTitleTextField.addTarget(self, action: #selector(textFieldTextDidChange), for: .editingChanged) self.editButton.addTarget(self, action: #selector(editButtonDidTap), for: .touchUpInside) @@ -143,31 +147,28 @@ extension CourseEditVC { name: UIResponder.keyboardWillHideNotification, object: nil) } -} -// MARK: - @objc Function - -extension CourseEditVC { - @objc private func textFieldTextDidChange() { - guard let text = courseTitleTextField.text else { return } - - self.editButton.isEnabled = !text.isEmpty - - if text.count > courseTitleMaxLength { - let index = text.index(text.startIndex, offsetBy: courseTitleMaxLength) - let newString = text[text.startIndex.. courseTitleMaxLength { + let index = text.index(text.startIndex, offsetBy: courseTitleMaxLength) + let newString = text[text.startIndex.. self.activityTextMaxLength { self.activityTextView.deleteBackward() } - - if text == self.currentDescription { - self.editButton.isEnabled = false - } else { - // 수정이 된 상태라면 팝업을 띄워주기 - self.navibar.resetLeftButtonAction({ [weak self] in - self?.presentToQuitEditAlertVC() - }, .titleWithLeftButton) - } } func textViewDidEndEditing(_ textView: UITextView) { From 35aba31107cf7eb98585cf6b1155e9a8b2caacfd Mon Sep 17 00:00:00 2001 From: dlwogus0128 <79050615+dlwogus0128@users.noreply.github.com> Date: Tue, 30 May 2023 11:35:25 +0900 Subject: [PATCH 11/11] =?UTF-8?q?[Fix]=20#154=20-=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81=20=EB=B0=8F=20=EC=BD=98?= =?UTF-8?q?=EC=86=94=20=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CourseDetail/VC/CourseDetailVC.swift | 19 ++++++++++++------- .../CourseDetail/VC/CourseEditVC.swift | 13 ++++--------- .../VC/InfoVC/ActivityRecordDetailVC.swift | 4 +++- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift index 55dd154e..6d106f2b 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift @@ -32,6 +32,7 @@ final class CourseDetailVC: UIViewController { private var isMyCourse: Bool? // MARK: - UI Components + private lazy var navibar = CustomNavigationBar(self, type: .titleWithLeftButton) private let moreButton = UIButton(type: .system).then { $0.setImage(ImageLiterals.icMore, for: .normal) @@ -147,10 +148,11 @@ extension CourseDetailVC { if isMyCourse == true { let editAlertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - let courseEditVC = CourseEditVC() - courseEditVC.loadData(model: uploadedCourseDetailModel) - courseEditVC.publicCourseId = self.publicCourseId + let editAction = UIAlertAction(title: "수정하기", style: .default, handler: {(_: UIAlertAction!) in + let courseEditVC = CourseEditVC() + courseEditVC.loadData(model: uploadedCourseDetailModel) + courseEditVC.publicCourseId = self.publicCourseId self.navigationController?.pushViewController(courseEditVC, animated: false) }) let deleteAlertVC = RNAlertVC(description: "러닝 기록을 정말로 삭제하시겠어요?").setButtonTitle("취소", "삭제하기") @@ -160,7 +162,8 @@ extension CourseDetailVC { } deleteAlertVC.modalPresentationStyle = .overFullScreen let deleteAction = UIAlertAction(title: "삭제하기", style: .destructive, handler: {(_: UIAlertAction!) in - self.present(deleteAlertVC, animated: false, completion: nil)}) + self.present(deleteAlertVC, animated: false, completion: nil) + }) [ editAction, deleteAction, cancelAction].forEach { editAlertController.addAction($0) } present(editAlertController, animated: false, completion: nil) } else { @@ -227,7 +230,6 @@ extension CourseDetailVC { private func setAddTarget() { likeButton.addTarget(self, action: #selector(likeButtonDidTap), for: .touchUpInside) - moreButton.addTarget(self, action: #selector(moreButtonDidTap), for: .touchUpInside) } @@ -239,9 +241,10 @@ extension CourseDetailVC { } } +// MARK: - Layout Helpers + extension CourseDetailVC { - - // MARK: - Layout Helpers + private func setNavigationBar() { view.addSubview(navibar) view.addSubview(moreButton) @@ -360,6 +363,8 @@ extension CourseDetailVC { } } +// MARK: - Network + extension CourseDetailVC { private func getUploadedCourseDetail() { guard let publicCourseId = self.publicCourseId else { return } diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift index 4ccde03c..9fee3994 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseEditVC.swift @@ -50,7 +50,7 @@ class CourseEditVC: UIViewController { private let departureInfoView = CourseDetailInfoView(title: "출발지", description: "") private let placeholder = "코스에 대한 소개를 적어주세요.(난이도/풍경/지형)" - private lazy var activityTextView = UITextView().then { + private let activityTextView = UITextView().then { $0.font = .b3 $0.backgroundColor = .m3 $0.tintColor = .m1 @@ -65,7 +65,6 @@ class CourseEditVC: UIViewController { setNavigationBar() setUI() setLayout() - setupTextView() setAddTarget() setKeyboardNotification() setTapGesture() @@ -148,7 +147,7 @@ extension CourseEditVC { object: nil) } - private func isTextChanged(_ textFieldtext: String, _ textViewtext: String) { + private func textDidChanged(_ textFieldtext: String, _ textViewtext: String) { // 둘 중 하나라도 비어있으면 버튼 비활성화 if textFieldtext.isEmpty || textViewtext.isEmpty { editButton.isEnabled = false @@ -311,10 +310,6 @@ extension CourseEditVC { make.height.equalTo(187) } } - - func setupTextView() { - activityTextView.delegate = self - } } // MARK: - UITextFieldDelegate @@ -323,7 +318,7 @@ extension CourseEditVC: UITextFieldDelegate { @objc private func textFieldTextDidChange() { guard let text = courseTitleTextField.text else { return } - isTextChanged(text, self.activityTextView.text) + textDidChanged(text, self.activityTextView.text) if text.count > courseTitleMaxLength { let index = text.index(text.startIndex, offsetBy: courseTitleMaxLength) @@ -361,7 +356,7 @@ extension CourseEditVC: UITextViewDelegate { textView.textColor = .g1 guard let courseTitleTextFieldText = self.courseTitleTextField.text else { return } - isTextChanged(courseTitleTextFieldText, text) + textDidChanged(courseTitleTextFieldText, text) if text.count > self.activityTextMaxLength { self.activityTextView.deleteBackward() diff --git a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift index a86ab80a..33436594 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/MyPage/VC/InfoVC/ActivityRecordDetailVC.swift @@ -140,7 +140,9 @@ extension ActivityRecordDetailVC { self?.deleteRecord() } - [ editAction, deleteAlertAction ].forEach { alertController.addAction($0) } + let cancelAction = UIAlertAction(title: "닫기", style: .cancel, handler: nil) + + [ editAction, deleteAlertAction, cancelAction ].forEach { alertController.addAction($0) } present(alertController, animated: true, completion: nil) }