모바일앱/iOS

로그아웃구현 - push와 present 그리고 NotificationCenter, View의 생명주기

GeekCode 2022. 1. 12. 22:03
반응형

 

지난 두 글에서 비슷하지만 다른 두가지의 뷰를 전환하는 방식을 다루었다. 

 

View와 View를 연결하는 방식

https://h1guitar.tistory.com/164

 

push와 present

안녕하세요 오늘은 앱을 개발하는 과정에서 기본적으로 요구하는 화면전환에 대해서 알아보겠습니다. 기본적으로 화면을 전환하는 방식은 Navigation을 이용해서 Stack처럼 쌓아가는 방식과 그냥

h1guitar.tistory.com

present

  • 세로 방향으로 전개되는 View
  • UIViewController의 메소드
  • 실행시키면 기존의 UIViewController 위에 새로운 뷰를 띄운다.
  • 이전 뷰로 돌아가기 위해서는 dismiss

push

  • 가로 방향으로 전개되는 View
  • UINavigationController의 메소드.
  • 실행시키면 기존의 UIViewController 위에 새로운 뷰를 띄운다. navigation에 새로운 VC를 쌓는 개념.
  • 이전 뷰로 돌아가기 위해서는 pop

 

 

NotificationCenter를 이용한 뷰의 이동 방식

https://h1guitar.tistory.com/165

 

Notification Center

Notification Center 1. <무언가 액션이 있었을때> 이 액션이 진행되었으니 담당자들은 처리바람. 2. 담당자 수신 완료, 처리하겠음 1. Post -> 이 액션이 진행되었으니 담당자들은 처리바람 NotificationCenter

h1guitar.tistory.com

 

두 가지가 있었다. 

그 중 내가 오늘 실무에서 구현했던 것은

 

 

어휴... 회사 내용이라 다 지웠다.. 이럴바엔 그냥 하나 그릴걸...

전체 앱의 진행

 

간단한 화면 설명

1. 런치스크린

2. 로그인화면

3. 메인화면의 팝업창

4. 상단 3화면 메인화면에서 상단 버튼 3개 화면

5. 하단 1번째 : 우측상단의 GNB버튼

6. 하단 가운데 마이페이지 

7. 하단 우측 : 설정창

 

연결방식

로그인창 - 메인화면 : 푸시방식(스택)

메인화면 - GNB : 푸시방식

메인화면 - 마이페이지, 설정창 : 프레젠트 방식

 

내가 구현해야하는 것은 설정창에서 로그아웃 버튼을 눌렀을 때, 로그인화면까지 가는 것이다. 

로그인창위에 메인화면이 올라가있고 거기서 present로 설정창이 되어있기 때문에

1. 로그아웃 클릭

2. Dismiss 실행

3. 메인화면으로 돌아감

4. NotificationCenter를 통한 이동 : 로그인창과 메인화면은 푸시(Stack)이기 때문에 Pop방식으로 돌아가야한다. 

 

View LifeCycle에 대한 이해

오늘 이야기 하고 싶은 것은 그다음 문제 까지다.

로그아웃을 하는 경우, 구현하는 것은 또 있다. 

1. 현재 자동로그인기능을 만들어 로그인을 성공하는 순간 로그인정보가 UserDefault에 저장하도록 되어있다.

2. 앱을 시작시 화면을 준비하면서 ViewDidLoad의 부분에서 UserDefault에 저장되어있는 정보가 있는지 확인 -> 정보가 있다면 자동으로 채워주고 업다면 빈칸으로 남겨둔다.

 

1번과 2번이 기존에 있던 기능이었다. 하지만 로그아웃버튼을 누르는 순간 로그인화면에 돌아가면 로그인 정보가 지워져 있어야하는 조건이다. 

ViewDidLoad에서 UserDefault를 확인하는 것을 확인했지만 화면이 변하지가 않았다.  혹시나 해서 View의 LifeCycle을 확인해보니

1. View는 최초로 나타날때만 ViewDidLoad를 지난다. 

2. 그위에 Stack으로 View가 쌓이면 다시 아래화면으로 돌아와도 ViewDidLoad의 코드는 실행되지않는다. 

3. 아래화면으로 돌아오는 순간 새로운 내용으로 View를 업데이트 하고 싶다면 ViewWillAppear에 코드를 작성해야 한다. 

 

 

로그아웃버튼을 눌러 로그인화면으로 돌아가기위해선 로그인화면을 다시 체크해서 업데이트하려면 ViewWillAppear에 쓸것!

 

다른 예를 들어보면,

메모앱에서 특정 메모를 들어가서 내용을 수정하고 나왔을때, 해당 메뉴가 수정되기 위해선 ViewWillAppear을 수정

반응형