View

SerializeField๋กœ ๋ ˆํผ๋Ÿฐ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ

[SerializeField] private TMPro.TMP_InputField idInputField;
[SerializeField] private TMPro.TMP_InputField passwordInputField;
[SerializeField] private Button signInButton;
  • ID ์ž…๋ ฅ ํ•„๋“œ

  • PW ์ž…๋ ฅ ํ•„๋“œ

  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ

์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

UniTask๋ฅผ ์ด์šฉํ•œ ์ด๋ฒคํŠธ ๋…ธ์ถœ

public IUniTaskAsyncEnumerable<AsyncUnit> OnSignInButtonClickedAsync => signInButton.OnClickAsAsyncEnumerable();
public IUniTaskAsyncEnumerable<string> OnIdInputFieldEditAsync => idInputField.OnValueChangedAsAsyncEnumerable();
public IUniTaskAsyncEnumerable<string> OnPasswordInputFieldEditAsync => passwordInputField.OnValueChangedAsAsyncEnumerable();
  • IUniTaskAsyncEnumerable ์„ ์ด์šฉํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ ๋…ธ์ถœํ•ด ์ค๋‹ˆ๋‹ค.

    • IUniTaskAsyncEnumerable ์„ ์ด์šฉํ•˜๋ฉด ์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ์ž…๋ ฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ ์ค‘๋ณต๋œ ์ž…๋ ฅ์„ ๋ฌด์‹œํ•˜๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ„ํŽธํ•ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ๋“ค์€ Liftcycle(presenter) ์ธก์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ Lifecycle ์ธก์—์„œ ์‚ฌ์šฉํ•  ๋ฉ”์„œ๋“œ

// ๋ทฐ์˜ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Lifecycle ์ธก์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋ธ์„ ์ž…๋ ฅ๋ฐ›์•„ view์˜ ์ดˆ๊ธฐ ํ‘œํ˜„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
public void SetView(SignInModalModel model)

// ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์กฐ์ ˆํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
public void SetSignInButtonInteractable(bool isInteractable)

// ํ˜„์žฌ ๋ทฐ์˜ ID/PW ์ž…๋ ฅ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
public LogInInfo GetCurrentInput()

์™„์„ฑ๋œ ์ฝ”๋“œ

public class SignInModalView : ModalViewBase
    {
        [SerializeField] private TMPro.TMP_InputField idInputField;
        [SerializeField] private TMPro.TMP_InputField passwordInputField;
        [SerializeField] private Button signInButton;
    
        public IUniTaskAsyncEnumerable<AsyncUnit> OnSignInButtonClickedAsync => signInButton.OnClickAsAsyncEnumerable();
        public IUniTaskAsyncEnumerable<string> OnIdInputFieldEditAsync => idInputField.OnValueChangedAsAsyncEnumerable();
        public IUniTaskAsyncEnumerable<string> OnPasswordInputFieldEditAsync => passwordInputField.OnValueChangedAsAsyncEnumerable();
        
        public void SetView(SignInModalModel model)
        {
            // ์˜ˆ์‹œ์—์„œ๋Š” ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค๋งŒ,
            // ๋ทฐ์˜ ์ดˆ๊ธฐํ™” ์ •๋ณด๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๋ฟŒ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
            // ์˜ˆ) ID/PW์˜ PlaceHolder text, ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ๋“ฑ๋“ฑ... ์„ ๊ตฌํ˜„ํ•˜๋ฉด ๊ดœ์ฐฎ๊ฒ ๋„ค์š”.
        }

        public void SetSignInButtonInteractable(bool isInteractable)
        {
            signInButton.interactable = isInteractable;
        }

        public LogInInfo GetCurrentInput()
        {
            return new LogInInfo(idInputField.text, passwordInputField.text);
        }
    }

    public class LogInInfo
    {
        public string ID { get; private set; }
        public string Password { get; private set; }
        
        public LogInInfo(string id, string password)
        {
            ID = id;
            Password = password;
        }
    }

Last updated