@@ -14,23 +14,26 @@ public final class MyPageViewController: BaseViewController<MyPageViewModel> {
1414 }
1515 private let contentView = UIView ( )
1616 private let studentInfoView = StudentInfoView ( )
17- // private let editButton = UIButton(type: .system).then {
18- // $0.setJobisText("수정", font: .subHeadLine, color: .Primary.blue20)
19- // }
17+ private let editButton = UIButton ( type: . system) . then {
18+ $0. setJobisText ( " 수정 " , font: . subHeadLine, color: . Primary. blue20)
19+ }
2020 private let reviewNavigateStackView = ReviewNavigateStackView ( )
2121 private let notificationSettingSectionView = NotificationSettingSectionView ( )
2222 private let accountSectionView = AccountSectionView ( )
2323 private let bugSectionView = BugSectionView ( )
2424 private let helpSectionView = HelpSectionView ( )
25+ private let selectedImage = PublishRelay < UploadFileModel > ( )
26+ private let picker = UIImagePickerController ( )
2527 private let logoutPublisher = PublishRelay < Void > ( )
2628 private let withdrawalPublisher = PublishRelay < Void > ( )
29+ private let changedImageURL = PublishRelay < String > ( )
2730
2831 public override func addView( ) {
2932 self . view. addSubview ( scrollView)
3033 self . scrollView. addSubview ( contentView)
3134 [
3235 studentInfoView,
33- // editButton,
36+ editButton,
3437 reviewNavigateStackView,
3538 notificationSettingSectionView,
3639 helpSectionView,
@@ -55,10 +58,10 @@ public final class MyPageViewController: BaseViewController<MyPageViewModel> {
5558 $0. leading. trailing. equalToSuperview ( )
5659 }
5760
58- // editButton.snp.makeConstraints {
59- // $0.centerY.equalTo(studentInfoView)
60- // $0.trailing.equalToSuperview().offset(-28)
61- // }
61+ editButton. snp. makeConstraints {
62+ $0. centerY. equalTo ( studentInfoView)
63+ $0. trailing. equalToSuperview ( ) . offset ( - 28 )
64+ }
6265
6366 reviewNavigateStackView. snp. updateConstraints {
6467 $0. leading. trailing. equalToSuperview ( ) . inset ( 24 )
@@ -90,15 +93,18 @@ public final class MyPageViewController: BaseViewController<MyPageViewModel> {
9093
9194 public override func bind( ) {
9295 let input = MyPageViewModel . Input (
93- viewAppear: self . viewDidLoadPublisher ,
96+ viewAppear: viewWillAppearPublisher ,
9497 reviewNavigate: reviewNavigateStackView. reviewNavigateButtonDidTap,
95- notificationSettingSectionDidTap: notificationSettingSectionView. getSelectedItem ( type: . notificationSetting) ,
98+ selectedImage: selectedImage,
99+ notificationSettingSectionDidTap: notificationSettingSectionView. getSelectedItem ( type:
100+ . notificationSetting) ,
96101 helpSectionDidTap: helpSectionView. getSelectedItem ( type: . announcement) ,
97102 bugReportSectionDidTap: bugSectionView. getSelectedItem ( type: . reportBug) ,
98103// bugReportListSectionDidTap: bugSectionView.getSelectedItem(type: .bugList),
99104 changePasswordSectionDidTap: accountSectionView. getSelectedItem ( type: . changePassword) ,
100105 logoutPublisher: logoutPublisher,
101- withdrawalPublisher: withdrawalPublisher
106+ withdrawalPublisher: withdrawalPublisher,
107+ changedImageURL: changedImageURL
102108 )
103109
104110 input. changePasswordSectionDidTap. asObservable ( )
@@ -126,6 +132,7 @@ public final class MyPageViewController: BaseViewController<MyPageViewModel> {
126132 }
127133
128134 public override func configureViewController( ) {
135+ self . picker. delegate = self
129136 self . viewWillAppearPublisher. asObservable ( )
130137 . subscribe ( onNext: { [ weak self] in
131138 self ? . showTabbar ( )
@@ -157,9 +164,36 @@ public final class MyPageViewController: BaseViewController<MyPageViewModel> {
157164 . show ( )
158165 } )
159166 . disposed ( by: disposeBag)
167+
168+ self . editButton. rx. tap
169+ . subscribe ( onNext: { [ weak self] in
170+ self ? . openLibrary ( )
171+ } )
172+ . disposed ( by: disposeBag)
160173 }
161174
162175 public override func configureNavigation( ) {
163176 self . setLargeTitle ( title: " 마이페이지 " )
164177 }
165178}
179+
180+ extension MyPageViewController : UIImagePickerControllerDelegate {
181+ func openLibrary( ) {
182+ picker. sourceType = . photoLibrary
183+ present ( picker, animated: true , completion: nil )
184+ }
185+ }
186+
187+ extension MyPageViewController : UINavigationControllerDelegate {
188+ public func imagePickerController(
189+ _ picker: UIImagePickerController ,
190+ didFinishPickingMediaWithInfo info: [ UIImagePickerController . InfoKey : Any ]
191+ ) {
192+ if let image = info [ UIImagePickerController . InfoKey. originalImage] as? UIImage {
193+ guard let imageData = image. pngData ( ) else { return }
194+ self . studentInfoView. updateProfileImage ( image: image)
195+ self . selectedImage. accept ( . init( file: imageData, fileName: " profile.png " ) )
196+ dismiss ( animated: true , completion: nil )
197+ }
198+ }
199+ }
0 commit comments