View
View ์ฝ๋๋ ๋ฐ๋์ Page
/Modal
๋ง๋ค ํ๋์ฉ ์์ฑํฉ๋๋ค.
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