NameList에 저장된 이름이 없는데 결정(ResultButton)을 누르면 오류가 나옵니다.
내보낼게 없는데 내 보내라고 이야기 하기 때문이죠. 이런 오류를 바로 잡아 봅시다. 어떻게??
바로! if-else문을 이용하여
만약 NameList에 저장된 이름이 없다면 NameLabel에 “이름을 넣어라” 라고 표시하고
그게 아니면 즉, 이름을 입력하셨다면, 걍 하던 일 계속 하도록 하면 되는겁니다~
이해가 어려우시다면 동영상을 참고하세요.
우선 If-else 블럭의 역할부터 알아 봅시다. 말 그대로 if, else 인데...
(조건)If - NameList 가 비었다면
(조건이 참일 때)Then - NameLabel: ”이름을 입력하시오”
(조건이 거짓일 때)Else - 그렇지 않다면 random 이름, 음식 이미지 출력
아참! if블록은 왼쪽 control 구역에 위치하며 else 블록은 아래 사진과 같이 만들 수 있습니다.
List가 비어있는지를 확인할 수 있는 [is list empty] 블록을 사용합니다.
[is list empty]블록은 오른쪽에 조립된 list가 비어있다면 참(true) 뭔가 들어있다면 거짓(false)을 왼쪽에 전달합니다.
[is list empty] 블록을 NameList와 조립하여 NameList가 비어있다면
참(true) , 비어있지 않다면 거짓(false)을 반환 (return)하도록 하는 조건을 만듭니다.
여기까지 NameList가 비어있다면 참(true)을 반환(return)하여 then에 붙어있는 블록들만 실행하고
비어있지 않다면 거짓(false)을 반환(return)하여 else 옆에 붙어있는 블록들만 실행하는 블록의 기초공사가 끝났습니다.
이제 조건이 True일 때(NameList가 비어있을 때) "이름을 입력하세요"라고 메시지를 띄워보겠습니다.
NameLabel 에 Text를 출력하기 위해 NameLabel 항목에서 [set NameLabel.Text] 블록을 Viewer의 빈공간에 끌어두고 Text항목에서 빈 문자블록을 [set NameLabel.Text]블록에 조립합니다.
②, ③ 빈 문자블록에 “이름을 입력하세요”라고 입력합니다.
조립된 두 블록을 If then else블록의 then옆에 끼워 맞춰 완성합니다.
기존에 만들었던 결과 출력 블록을 else옆에 조립하여 완성합니다.
ResultButton을 클릭하면 결과를 출력해야 하므로 [When ResultButton.Click]블록을 결과 출력 블록과 합칩니다.
이름을 입력하고 저장한 뒤 NameTextBox를 빈칸으로 만들어 봅시다. 여러 번 이름을 추가할 때 편리하겠죠?
방법은 간단합니다. 사용자가 이름을 입력하고 EnterButton을 클릭하면 NameTextBox를 빈칸으로 만들어 입력된 이름을 삭제할 수 있습니다.
화면 왼쪽 blocks 영역에서 NameTextBox를 클릭한 후 [set NameTextBox.Text to]블록을 빈 화면에 드래그해 줍니다. 그런 후 Text를 클릭하여 빈 문자블록을 드래그하여 [set NameTextBox.Text to]블록 옆에 연결시켜 줍니다. 완성된 블록을 [when EnterButton.Click]블록 안에 끼워줍니다.
앞서 1편 원터치 포강냉이에서 이미 자세하게 설명했던 keyboard 숨기기 기능을 다시 한 번 사용해 보겠습니다.
다들 기억하시죠? 기억 못해도 걱정 ㄴㄴ! 다시 찾아보거나 동영상 보시면 해결 될 일!ㅋㅋ
EnterButton을 클릭하면 나오는 블록 중 [call NameTextBox.HideKeyboard]블록을 화면해 드래그 하여
[when EnterButton.Click] 블록 안에 삽입해 주세요.
이제 기능은 완성이 되었습니다. 다음 페이지에서 디자인을 완성해 봅시다~