-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Network [#100] 답글 좋아요 및 답글 좋아요 삭제 API 연결 및 UI 세부사항 수정 #103
Changes from all commits
06573fc
86e50cf
390ceb6
e61f439
cede0b9
c967fdd
4c641f6
bb10fa8
f61ec12
3d041d4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,6 +33,7 @@ | |
2A5220EC2B507F2A001510B7 /* UITableViewCellRegisterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5220EB2B507F2A001510B7 /* UITableViewCellRegisterable.swift */; }; | ||
2A5220EF2B507F97001510B7 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5220EE2B507F97001510B7 /* NotificationViewModel.swift */; }; | ||
2A5220F22B507FAE001510B7 /* NotificationTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5220F12B507FAE001510B7 /* NotificationTableViewCell.swift */; }; | ||
2A5D68F82B58E9C0000AE1B7 /* CommentLikeRequestDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5D68F72B58E9C0000AE1B7 /* CommentLikeRequestDTO.swift */; }; | ||
2A6D54C12B479B4300F9891E /* adjusted+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A6D54C02B479B4300F9891E /* adjusted+.swift */; }; | ||
2A6D54C32B493A8400F9891E /* UIFont+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A6D54C22B493A8400F9891E /* UIFont+.swift */; }; | ||
2A6D54C62B493E3F00F9891E /* Pretendard-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2A6D54C42B493E3F00F9891E /* Pretendard-SemiBold.otf */; }; | ||
|
@@ -173,6 +174,7 @@ | |
2A5220EB2B507F2A001510B7 /* UITableViewCellRegisterable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCellRegisterable.swift; sourceTree = "<group>"; }; | ||
2A5220EE2B507F97001510B7 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = "<group>"; }; | ||
2A5220F12B507FAE001510B7 /* NotificationTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCell.swift; sourceTree = "<group>"; }; | ||
2A5D68F72B58E9C0000AE1B7 /* CommentLikeRequestDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentLikeRequestDTO.swift; sourceTree = "<group>"; }; | ||
2A6D54C02B479B4300F9891E /* adjusted+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "adjusted+.swift"; sourceTree = "<group>"; }; | ||
2A6D54C22B493A8400F9891E /* UIFont+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+.swift"; sourceTree = "<group>"; }; | ||
2A6D54C42B493E3F00F9891E /* Pretendard-SemiBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pretendard-SemiBold.otf"; sourceTree = "<group>"; }; | ||
|
@@ -641,6 +643,7 @@ | |
isa = PBXGroup; | ||
children = ( | ||
2F05B1B62B57F1FD00AC368D /* WriteReplyRequestDTO.swift */, | ||
2A5D68F72B58E9C0000AE1B7 /* CommentLikeRequestDTO.swift */, | ||
); | ||
path = RequestDTO; | ||
sourceTree = "<group>"; | ||
|
@@ -1228,6 +1231,7 @@ | |
3CF184D12B4EFF9900816D5F /* MyPageProfileView.swift in Sources */, | ||
2A51831A2B571CC400B43BA8 /* NotificationList.swift in Sources */, | ||
3C61931B2B3A7AD000220CEB /* NetworkError.swift in Sources */, | ||
2A5D68F82B58E9C0000AE1B7 /* CommentLikeRequestDTO.swift in Sources */, | ||
2F05B1B72B57F1FD00AC368D /* WriteReplyRequestDTO.swift in Sources */, | ||
3CBF99272B549C7D0015FE4B /* WriteViewModel.swift in Sources */, | ||
3C70BE332B53EF92001AA5A6 /* MyPageViewModel.swift in Sources */, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 다음과 같은 변경 사항을 포함하고 있습니다:
리뷰 및 개선 제안:
추가적인 정보가 제공되지 않아서 더 자세한 리뷰는 어렵습니다. |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -38,10 +38,10 @@ extension String { | |
} else if let minute = components.minute, minute == 0 { | ||
return "지금" | ||
} else { | ||
return "시간을 불러올 수 없습니다." | ||
return "알 수 없음" | ||
} | ||
} else { | ||
return "날짜 변환 실패" | ||
return "알 수 없음" | ||
} | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치에 대해 간단한 코드 리뷰를 도와드리겠습니다.
위의 내용은 코드 리뷰와 개선 제안입니다. 실제 버그나 오류 위험 요소가 있는지는 코드 조각만으로는 판단하기 어렵습니다. 전체 코드의 맥락과 다른 부분과의 상호작용을 고려하여 코드를 평가하는 것이 더 바람직합니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,4 +11,21 @@ extension UIViewController { | |
var statusBarHeight: CGFloat { | ||
return UIApplication.shared.windows.filter({$0.isKeyWindow}).first?.windowScene?.statusBarManager?.statusBarFrame.height ?? 20 | ||
} | ||
|
||
func applyTabBarAttributes(to tabBarItem: UITabBarItem, isSelected: Bool) { | ||
let attributes: [NSAttributedString.Key: Any] | ||
|
||
if isSelected { | ||
attributes = [ | ||
.font: UIFont.font(.caption3), | ||
.foregroundColor: UIColor.donSecondary | ||
] // title이 선택되었을 때 폰트, 색상 설정 | ||
} else { | ||
attributes = [ | ||
.font: UIFont.font(.caption4), | ||
.foregroundColor: UIColor.donGray7 | ||
] // title이 선택되지 않았을 때 폰트, 색상 설정 | ||
} | ||
tabBarItem.setTitleTextAttributes(attributes, for: .normal) | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3 |
||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래는 코드 패치입니다. 이에 대한 간단한 코드 리뷰를 도와드리겠습니다. 버그 위험 또는 개선 제안이 있다면 환영합니다.
전반적으로, 코드에는 큰 문제가 보이지 않습니다. 하지만 첫 번째 함수에서 기준 창을 올바르게 가져오기 위해 약간의 수정이 필요합니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,6 +12,7 @@ enum ImageLiterals { | |
static var btnBack: UIImage { .load(name: "btn_back") } | ||
static var logoSymbol: UIImage { .load(name: "logo_symbol") } | ||
static var imgProfile: UIImage { .load(name: "img_profile") } | ||
static var btnBackGray: UIImage { .load(name: "btn_back_gray") } | ||
} | ||
|
||
enum TabBar { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치의 문제점 및 개선 제안은 다음과 같습니다:
수정 예시: enum ImageLiterals {
static var btnBack: UIImage { .load(name: "btn_back") }
static var logoSymbol: UIImage { .load(name: "logo_symbol") }
static var imgProfile: UIImage { .load(name: "img_profile") }
}
// 새로 추가된 이미지 리터럴 추가
extension ImageLiterals {
static var btnBackGray: UIImage { .load(name: "btn_back_gray") }
} 변경 후, 이외에는 패치 코드에 큰 문제는 보이지 않습니다. 이 코드는 이미지 리소스를 로드하는 간단한 기능을 제공하는 것으로 보입니다. 리뷰가 끝나면 전체 코드와 함께 더 자세한 피드백을 제공할 수도 있습니다. |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
"images" : [ | ||
{ | ||
"filename" : "btn_back.png", | ||
"idiom" : "universal", | ||
"scale" : "1x" | ||
}, | ||
{ | ||
"filename" : "[email protected]", | ||
"idiom" : "universal", | ||
"scale" : "2x" | ||
}, | ||
{ | ||
"filename" : "[email protected]", | ||
"idiom" : "universal", | ||
"scale" : "3x" | ||
} | ||
], | ||
"info" : { | ||
"author" : "xcode", | ||
"version" : 1 | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위의 코드 패치를 간단하게 코드 리뷰해 드리겠습니다. 가능한 버그 위험과 개선 제안 사항을 알려드리겠습니다. 이 코드는 JSON 형식으로 되어 있습니다. 주어진 코드 조각은 이미지 파일의 정보와 작성자 및 버전 정보를 포함하고 있습니다. 주된 목적은 이미지 파일에 대한 정보를 나열하는 것으로 보입니다. 버그 위험 및 개선 제안:
간략한 코드 리뷰를 마치겠습니다! 추가 질문이 있거나 도움이 필요하시면 언제든지 말씀해주세요. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
// | ||
// CommentLikeRequestDTO.swift | ||
// DontBe-iOS | ||
// | ||
// Created by 변희주 on 1/18/24. | ||
// | ||
|
||
import Foundation | ||
|
||
struct CommentLikeRequestDTO: Encodable { | ||
let notificationTriggerType: String | ||
let notificationText: String | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰를 해드리겠습니다.
개선 제안:
요약하자면, 코드가 간결하고 보완할 사항이 그리 많지 않아 보입니다. 단지 구조체 및 변수 이름, 코드에 대한 주석의 개선을 통해 가독성을 향상시킬 수 있을 것입니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,6 +16,7 @@ final class HomeCollectionViewCell: UICollectionViewCell, UICollectionViewRegist | |
var KebabButtonAction: (() -> Void) = {} | ||
var LikeButtonAction: (() -> Void) = {} | ||
var TransparentButtonAction: (() -> Void) = {} | ||
var ProfileButtonAction: (() -> Void) = {} | ||
var isLiked: Bool = false | ||
var alarmTriggerType: String = "" | ||
var targetMemberId: Int = 0 | ||
|
@@ -44,8 +45,9 @@ final class HomeCollectionViewCell: UICollectionViewCell, UICollectionViewRegist | |
image.clipsToBounds = true | ||
image.layer.borderWidth = 1.adjusted | ||
image.layer.borderColor = UIColor.clear.cgColor | ||
image.image = UIImage.checkmark | ||
image.image = ImageLiterals.Common.imgProfile | ||
image.layer.cornerRadius = 22.adjusted | ||
image.isUserInteractionEnabled = true | ||
return image | ||
}() | ||
|
||
|
@@ -276,6 +278,7 @@ extension HomeCollectionViewCell { | |
kebabButton.addTarget(self, action: #selector(showButtons), for: .touchUpInside) | ||
likeButton.addTarget(self, action: #selector(likeToggleButton), for: .touchUpInside) | ||
ghostButton.addTarget(self, action: #selector(transparentShowPopupButton), for: .touchUpInside) | ||
profileImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(profileButton))) | ||
} | ||
|
||
@objc | ||
|
@@ -291,4 +294,9 @@ extension HomeCollectionViewCell { | |
func transparentShowPopupButton() { | ||
TransparentButtonAction() | ||
} | ||
|
||
@objc | ||
func profileButton() { | ||
ProfileButtonAction() | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치에는 몇 가지 개선점과 버그 위험이 있습니다:
이 외에는 주요한 버그 리스크가 보이지 않습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 해당 코드 패치를 간단히 검토해보겠습니다.
코드 패치는 주어진 목적에는 문제가 없어 보이며, 추가 개선 사항이 필요하다고 생각되지 않습니다. 하지만 전반적인 코드 베이스와 프로젝트 요구 사항에 따라 개선 여지가 있을 수 있습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -83,12 +83,13 @@ final class HomeViewController: UIViewController { | |
|
||
override func viewWillAppear(_ animated: Bool) { | ||
self.navigationController?.navigationBar.isHidden = true | ||
self.tabBarController?.tabBar.isHidden = false | ||
bindViewModel() | ||
} | ||
|
||
override func viewWillDisappear(_ animated: Bool) { | ||
self.navigationController?.navigationBar.isHidden = false | ||
|
||
self.navigationController?.navigationBar.backgroundColor = .clear | ||
refreshPost() | ||
} | ||
} | ||
|
@@ -287,7 +288,7 @@ extension HomeViewController { | |
|
||
private func postLikeButtonAPI(isClicked: Bool, contentId: Int) { | ||
// 최초 한 번만 publisher 생성 | ||
var likeButtonTapped: AnyPublisher<(Bool, Int), Never>? = Just(()) | ||
let likeButtonTapped: AnyPublisher<(Bool, Int), Never>? = Just(()) | ||
.map { _ in return (!isClicked, contentId) } | ||
.throttle(for: .seconds(2), scheduler: DispatchQueue.main, latest: false) | ||
.eraseToAnyPublisher() | ||
|
@@ -297,9 +298,7 @@ extension HomeViewController { | |
let output = self.viewModel.transform(from: input, cancelBag: self.cancelBag) | ||
|
||
output.toggleLikeButton | ||
.sink { value in | ||
print(value) | ||
} | ||
.sink { _ in } | ||
.store(in: self.cancelBag) | ||
} | ||
} | ||
|
@@ -355,13 +354,37 @@ extension HomeViewController: UICollectionViewDataSource, UICollectionViewDelega | |
cell.likeButton.setImage(cell.isLiked ? ImageLiterals.Posting.btnFavoriteActive : ImageLiterals.Posting.btnFavoriteInActive, for: .normal) | ||
self.postLikeButtonAPI(isClicked: cell.isLiked, contentId: self.viewModel.postData[indexPath.row].contentId) | ||
} | ||
|
||
cell.ProfileButtonAction = { | ||
let memberId = self.viewModel.postData[indexPath.row].memberId | ||
|
||
if memberId == loadUserData()?.memberId ?? 0 { | ||
self.tabBarController?.selectedIndex = 3 | ||
if let selectedViewController = self.tabBarController?.selectedViewController { | ||
self.applyTabBarAttributes(to: selectedViewController.tabBarItem, isSelected: true) | ||
} | ||
let myViewController = self.tabBarController?.viewControllers ?? [UIViewController()] | ||
for (index, controller) in myViewController.enumerated() { | ||
if let tabBarItem = controller.tabBarItem { | ||
if index != self.tabBarController?.selectedIndex { | ||
self.applyTabBarAttributes(to: tabBarItem, isSelected: false) | ||
} | ||
} | ||
} | ||
} else { | ||
let viewController = MyPageViewController(viewModel: MyPageViewModel(networkProvider: NetworkService())) | ||
viewController.memberId = memberId | ||
self.navigationController?.pushViewController(viewController, animated: true) | ||
} | ||
} | ||
|
||
cell.TransparentButtonAction = { | ||
self.alarmTriggerType = cell.alarmTriggerType | ||
self.targetMemberId = cell.targetMemberId | ||
self.alarmTriggerdId = cell.alarmTriggerdId | ||
self.present(self.transparentPopupVC, animated: false, completion: nil) | ||
} | ||
cell.profileImageView.load(url: viewModel.postData[indexPath.row].memberProfileUrl) | ||
cell.nicknameLabel.text = viewModel.postData[indexPath.row].memberNickname | ||
cell.transparentLabel.text = "투명도 \(viewModel.postData[indexPath.row].memberGhost)%" | ||
cell.contentTextLabel.text = viewModel.postData[indexPath.row].contentText | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰를 해드리겠습니다:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 제시된 코드 패치에 대한 간단한 코드 리뷰를 도와드리겠습니다.
이외에는 제시된 코드 패치에서 큰 문제점을 발견하지 못했습니다. 위의 내용들을 고려하여 코드를 개선하시면 될 것입니다. |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -123,7 +123,7 @@ extension HomeViewModel { | |
body: requestDTO, | ||
pathVariables: ["":""] | ||
) | ||
print ("👻👻👻👻👻게시글 좋아요 버튼 클릭👻👻👻👻👻") | ||
print ("👻👻👻👻👻게시물 좋아요 버튼 클릭👻👻👻👻👻") | ||
return data | ||
} catch { | ||
return nil | ||
|
@@ -141,7 +141,7 @@ extension HomeViewModel { | |
body: EmptyBody(), | ||
pathVariables: ["":""] | ||
) | ||
print ("👻👻👻👻👻게시글 좋아요 취소 버튼 클릭👻👻👻👻👻") | ||
print ("👻👻👻👻👻게시물 좋아요 취소 버튼 클릭👻👻👻👻👻") | ||
return data | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 다음은 아래의 코드 패치에 대한 간략한 코드 리뷰입니다. 버그 위험 및 개선 제안을 언급해드리겠습니다.
이상이 코드 리뷰입니다. 혹시 추가로 궁금한 사항이 있으시면 언제든지 물어보십시오! |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -181,7 +181,8 @@ extension MyPageAccountInfoViewController { | |
} | ||
|
||
private func bindViewModel() { | ||
let input = MyPageViewModel.Input(viewUpdate: Just((0)).eraseToAnyPublisher()) | ||
let memberId = loadUserData()?.memberId ?? 0 | ||
let input = MyPageViewModel.Input(viewUpdate: Just((0, memberId )).eraseToAnyPublisher()) | ||
|
||
let output = viewModel.transform(from: input, cancelBag: cancelBag) | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래는 코드 패치입니다. 코드 리뷰를 간단하게 도와드리겠습니다. 버그 위험과/또는 개선 제안이 있을 경우 환영합니다:
추가적인 정보를 제공하시면 보다 자세한 리뷰를 할 수 있습니다. |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,6 +20,7 @@ final class MyPageViewController: UIViewController { | |
|
||
private var cancelBag = CancelBag() | ||
var viewModel: MyPageViewModel | ||
var memberId: Int = loadUserData()?.memberId ?? 0 | ||
|
||
var currentPage: Int = 0 { | ||
didSet { | ||
|
@@ -43,8 +44,14 @@ final class MyPageViewController: UIViewController { | |
// MARK: - UI Components | ||
|
||
let rootView = MyPageView() | ||
|
||
// MARK: - Life Cycles | ||
let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame) | ||
private var navigationBackButton: UIButton = { | ||
let button = UIButton() | ||
button.setImage(ImageLiterals.Common.btnBackGray, for: .normal) | ||
return button | ||
}() | ||
|
||
// MARK: - Life Cycles | ||
|
||
override func loadView() { | ||
super.loadView() | ||
|
@@ -75,15 +82,35 @@ final class MyPageViewController: UIViewController { | |
super.viewWillAppear(true) | ||
|
||
bindViewModel() | ||
let image = ImageLiterals.MyPage.icnMenu | ||
let renderedImage = image.withRenderingMode(.alwaysOriginal) | ||
let hambergerButton = UIBarButtonItem(image: renderedImage, | ||
style: .plain, | ||
target: self, | ||
action: #selector(hambergerButtonTapped)) | ||
navigationItem.rightBarButtonItem = hambergerButton | ||
|
||
self.navigationItem.title = StringLiterals.MyPage.MyPageNavigationTitle | ||
if memberId == loadUserData()?.memberId ?? 0 { | ||
self.navigationItem.title = StringLiterals.MyPage.MyPageNavigationTitle | ||
self.tabBarController?.tabBar.isHidden = false | ||
hambergerButton.isHidden = false | ||
navigationBackButton.isHidden = true | ||
} else { | ||
self.navigationItem.title = "" | ||
self.tabBarController?.tabBar.isHidden = true | ||
hambergerButton.isHidden = true | ||
navigationBackButton.isHidden = false | ||
} | ||
Comment on lines
+93
to
+103
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3 |
||
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.donWhite] | ||
self.navigationItem.hidesBackButton = true | ||
} | ||
|
||
override func viewWillDisappear(_ animated: Bool) { | ||
super.viewWillDisappear(true) | ||
|
||
self.navigationController?.navigationBar.backgroundColor = .clear | ||
statusBarView.removeFromSuperview() | ||
navigationBackButton.removeFromSuperview() | ||
} | ||
|
||
override func viewDidLayoutSubviews() { | ||
|
@@ -111,18 +138,14 @@ extension MyPageViewController { | |
self.tabBarController?.tabBar.isTranslucent = true | ||
self.navigationController?.navigationBar.backgroundColor = .donBlack | ||
self.navigationController?.navigationBar.barTintColor = .donBlack | ||
|
||
let image = ImageLiterals.MyPage.icnMenu | ||
let renderedImage = image.withRenderingMode(.alwaysOriginal) | ||
let hambergerButton = UIBarButtonItem(image: renderedImage, | ||
style: .plain, | ||
target: self, | ||
action: #selector(hambergerButtonTapped)) | ||
|
||
navigationItem.rightBarButtonItem = hambergerButton | ||
} | ||
|
||
private func setLayout() { | ||
self.navigationController?.navigationBar.addSubviews(navigationBackButton) | ||
navigationBackButton.snp.makeConstraints { | ||
$0.centerY.equalToSuperview() | ||
$0.leading.equalToSuperview().inset(23.adjusted) | ||
} | ||
rootView.pageViewController.view.snp.makeConstraints { | ||
$0.top.equalTo(rootView.segmentedControl.snp.bottom).offset(2.adjusted) | ||
$0.leading.trailing.equalToSuperview() | ||
|
@@ -140,6 +163,7 @@ extension MyPageViewController { | |
} | ||
|
||
private func setAddTarget() { | ||
navigationBackButton.addTarget(self, action: #selector(backButtonPressed), for: .touchUpInside) | ||
rootView.segmentedControl.addTarget(self, action: #selector(changeValue(control:)), for: .valueChanged) | ||
rootView.myPageBottomsheet.profileEditButton.addTarget(self, action: #selector(profileEditButtonTapped), for: .touchUpInside) | ||
rootView.myPageBottomsheet.accountInfoButton.addTarget(self, action: #selector(accountInfoButtonTapped), for: .touchUpInside) | ||
|
@@ -148,7 +172,7 @@ extension MyPageViewController { | |
} | ||
|
||
private func bindViewModel() { | ||
let input = MyPageViewModel.Input(viewUpdate: Just((1)).eraseToAnyPublisher()) | ||
let input = MyPageViewModel.Input(viewUpdate: Just((1, self.memberId)).eraseToAnyPublisher()) | ||
|
||
let output = viewModel.transform(from: input, cancelBag: cancelBag) | ||
|
||
|
@@ -258,6 +282,11 @@ extension MyPageViewController { | |
let navigationBarHeight = self.navigationController?.navigationBar.frame.height ?? 0 | ||
rootView.myPageScrollView.setContentOffset(CGPoint(x: 0, y: -rootView.myPageScrollView.contentInset.top - navigationBarHeight - statusBarHeight), animated: true) | ||
} | ||
|
||
@objc | ||
private func backButtonPressed() { | ||
self.navigationController?.popViewController(animated: true) | ||
} | ||
} | ||
|
||
// MARK: - Network | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치의 간단한 코드 리뷰를 도와드리겠습니다.
이외에도 코드에서 해당하지 않거나 알 수 없는 부분이 있습니다. 필요한 경우 해당 내용에 대한 추가 정보를 제공하면 더욱 정확한 리뷰를 제공할 수 있습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래는 코드 패치입니다. 이에 대한 간단한 코드 리뷰를 도와드리겠습니다. 버그 위험 및 개선 제안 등을 환영합니다: @@ -20,6 +20,7 @@ final class MyPageViewController: UIViewController {
변수 viewModel은 어디에서 초기화되는지 확인해야 합니다. 즉, 해당 뷰 컨트롤러의 인스턴스를 생성할 때 어떻게 초기화되는지 확인해야 합니다. var viewModel: MyPageViewModel let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame) 생성자에서 사용하는 ImageLiterals.Common.btnBackGray 및 ImageLiterals.MyPage.icnMenu 이미지가 현재 정의되어 있는지 확인해야 합니다. viewWillAppear(:) 및 viewWillDisappear(:) 메서드에서 self.navigationItem.title과 tabBarController?.tabBar.isHidden 속성, hambergerButton 및 navigationBackButton의 숨김 여부 처리에 대해 확인해야 합니다. setLayout() 메서드 내에서 self.navigationController?.navigationBar.addSubviews(navigationBackButton)와 navigationBackButton.snp.makeConstraints 등의 레이아웃 작업은 해당 코드에서 제공되지 않았으므로, 추가적인 정보가 필요합니다. bindViewModel() 메서드에서 MyPageViewModel.Input() 생성자를 통해 viewUpdate 값을 전달하는데, viewUpdate의 타입 및 형식에 대한 정의가 필요합니다. backButtonPressed() 메서드는 이전 뷰 컨트롤러로 돌아가는 popViewController(animated:) 메서드를 호출하므로, 내비게이션 스택에 이전 뷰 컨트롤러가 있는지 확인해야 합니다. |
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드 패치에서는 특정 파일에 대한 변경 내용이 포함되어 있습니다. 변경 내용은 빌드 파일 및 파일 참조 목록에 새로운 항목을 추가하는 것입니다.
버그의 위험성과 개선 제안은 코드 패치 자체만으로는 파악하기 어렵습니다. 빌드 설정 또는 다른 파일들에 대한 정보가 없어서 전반적인 시스템 상황을 알 수 없기 때문입니다.
코드 패치의 단편적인 내용만으로는 구체적인 버그나 개선 사항을 진단하기가 어렵습니다. 코드 전체와 해당 코드를 사용하는 다른 부분을 고려해야 하며, 실행 환경, 의존성, 요구 사항 등을 고려해야합니다.