화면전환 시 초기화 문제..

조회수 1736회

1.

세그웨이로 화면전환이 이루어 지면 버튼에 있던 값들이 변경됩니다..;

버튼의 텍스트 값을 서버에서 불러와서 변경하고 이 버튼을 클릭하여 화면전환이 이루어지고 다시 back 하여 돌아오면

버튼의 텍스트 값이 스토리보드에 지정한 텍스트 값으로 돌아가버립니다;;

그리고 스토리보드에 버튼 텍스트값을 아얘 공란으로 둬버리면, ("") 버튼 텍스트가 변경되지가 않네요;

2.

viewDidLoad에 델리게이트라던가 여러가지 값을 지정해 놓은 후 화면전환이 이루어지면 해당 옵션들이 전부 초기화 되는것 같습니다..

따라서 viewDidLoad에 있던 값들 중 상당수를 viewDidAppear로 옮겼는데 이렇게 하는게 맞는건가요;

  • (•́ ✖ •̀)
    알 수 없는 사용자

5 답변

  • tableview에 static cell로 구성되어 있으며, static cell에 stackview안에 뷰로 구성되어 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 자답입니다. // self.btnNoticeContent_01.titleLabel?.text = content self.btnNoticeContent_01.setTitle(content, forState: .Normal) 밑에거로 하니깐 잘 되네요. 왜 저렇게 했을까 어디서 보고 ㅠ

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 2번에 대해서 궁금합니다! 원래 저렇게 해야하나요? 화면전환시마다 viewDidAppear에서 델리게이트라든가 여러가지 설정을 다시 재초기화 해주어야 하는건가요?

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아닙니다. ViewDidAppear는 정말로 나타날때 필요한 작업들을 해야하고 초기화작업은 ViewDidLoad 에서 하시는것이 맞습니다. 아마도 화면 전환할때 어떤 이유에서인지 ViewController를 다시 만들고 있는것 같은 느낌입니다. 알 수 없는 사용자 2016.8.24 10:01
    • UIButton 내부에 titleLabel 이 한 개만 존재합니다. 알 수 없는 사용자 2017.4.4 14:19
  • viewWillAppear 에도 초기화 과정이 있지 않나요? back 에 관한 Segue도 지정하신건가요?

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • UIButton 내부에 titleLabel 이 한 개만 존재합니다. 그리고, 버튼상태가 바뀔 때(.normal, .highlighted) 마다 titleLabel.text 가 매번 새로 설정됩니다.

    UIButton 내부에 상태별 title 을 저장해 두고 있습니다.

    • normal 일 때 "일반", highlighted 일 때 "강조" 와 같은 식으로

    직접 button.titleLabel.text 를 수정하시면, 내부 저장된 상태별 title이 변경되지 않기 때문에 다른 상태로 변경되었다가 돌아오면, 값이 최초값으로 돌아오게 됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)