IOS 앱 개발
바디와이짐 커뮤니티 앱 개발 - 설정
vitamin3000
2024. 9. 21. 19:23
지난번 달력. 화면 기능 구현에 이은 마지막 설정 기능이다.
로그아웃 버튼을 누르면 로그인화면으로 넘어가도록 하였다.
또 계정삭제 기능을 구현하였다.
계정삭제 버튼을 누르면 파어이베이스에서 저장되어 있는 uuid 값을 삭제하고 로그인 화면으로 넘어가게 하였다.
이 기능을 구현하지 않으면. 앱스토어에서 반려 당하므로 주의한다.
작성한 코드
//
// SettingMainViewController.swift
// body_gym
//
// Created by 차재식 on 1/26/24.
//
import Foundation
import FirebaseAuth
import UIKit
class SettingMainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 배경색을 흰색으로 설정합니다.
view.backgroundColor = .white
// 로그아웃 버튼을 생성합니다.
let logoutButton = UIButton(type: .system)
logoutButton.setTitle("로그아웃", for: .normal)
logoutButton.translatesAutoresizingMaskIntoConstraints = false
logoutButton.addTarget(self, action: #selector(didTapLogoutButton), for: .touchUpInside)
view.addSubview(logoutButton)
// 계정 삭제 버튼을 생성합니다.
let deleteAccountButton = UIButton(type: .system)
deleteAccountButton.setTitle("계정 삭제", for: .normal)
deleteAccountButton.translatesAutoresizingMaskIntoConstraints = false
deleteAccountButton.addTarget(self, action: #selector(didTapDeleteAccountButton), for: .touchUpInside)
view.addSubview(deleteAccountButton)
// AutoLayout을 이용하여 버튼을 화면 중앙에 위치하게 합니다.
NSLayoutConstraint.activate([
logoutButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
logoutButton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -30), // 로그아웃 버튼 위치를 조정합니다.
deleteAccountButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
deleteAccountButton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 30) // 계정 삭제 버튼 위치를 조정합니다.
])
}
@objc func didTapLogoutButton() {
// 로그아웃 버튼이 눌렸을 때 ViewController로 돌아갑니다.
let viewController = ViewController()
UIApplication.shared.windows.first?.rootViewController = viewController
UIApplication.shared.windows.first?.makeKeyAndVisible()
}
@objc func didTapDeleteAccountButton() {
// 계정 삭제 확인 알림을 띄웁니다.
let alert = UIAlertController(title: "계정 삭제", message: "정말 삭제하시겠습니까?", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "예", style: .default) { _ in
// '예'를 선택한 경우, 현재 사용자의 계정을 삭제합니다.
Auth.auth().currentUser?.delete { error in
if let error = error {
// 계정 삭제에 실패한 경우 에러 메시지를 출력합니다.
print("Failed to delete account: \(error)")
} else {
// 계정 삭제에 성공한 경우 ViewController로 돌아갑니다.
print("Account deleted.")
// 사용자 계정 정보를 UserDefault에서 제거합니다.
UserDefaults.standard.removeObject(forKey: "SavedId")
UserDefaults.standard.removeObject(forKey: "SavedPassword")
// ViewController로 이동합니다.
let viewController = ViewController()
UIApplication.shared.windows.first?.rootViewController = viewController
UIApplication.shared.windows.first?.makeKeyAndVisible()
}
}
})
alert.addAction(UIAlertAction(title: "아니오", style: .cancel))
present(alert, animated: true)
}
}
결과화면