View
View code must use the Page
/ / ฮปModal
for each /.
Getting a reference with SerializeField
[SerializeField] private TMPro.TMP_InputField idInputField;
[SerializeField] private TMPro.TMP_InputField passwordInputField;
[SerializeField] private Button signInButton;
ID Input Fields
PW input field
Login button
for the login button.
Exposing events with UniTask
public IUniTaskAsyncEnumerable<AsyncUnit> OnSignInButtonClickedAsync => signInButton.OnClickAsAsyncEnumerable();
public IUniTaskAsyncEnumerable<string> OnIdInputFieldEditAsync => idInputField.OnValueChangedAsAsyncEnumerable();
public IUniTaskAsyncEnumerable<string> OnPasswordInputFieldEditAsync => passwordInputField.OnValueChangedAsAsyncEnumerable();
Expose events using IUniTaskAsyncEnumerable.
Using IUniTaskAsyncEnumerable has the advantage of making your code easier to process and more readable, such as processing input through an input buffer or ignoring duplicate inputs while they are being processed.
These will be used by the Liftcycle (presenter) side.
Other Lifecycle-side methods to use
// ๋ทฐ์ ์ด๊ธฐํ์ ์ฌ์ฉ๋ฉ๋๋ค. Lifecycle ์ธก์ผ๋ก๋ถํฐ ๋ชจ๋ธ์ ์
๋ ฅ๋ฐ์ view์ ์ด๊ธฐ ํํ์ ์ฌ์ฉ๋ฉ๋๋ค.
public void SetView(SignInModalModel model)
// ๋ก๊ทธ์ธ ๋ฒํผ์ ํ์ฑํ ์ฌ๋ถ๋ฅผ ์กฐ์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
public void SetSignInButtonInteractable(bool isInteractable)
// ํ์ฌ ๋ทฐ์ ID/PW ์
๋ ฅ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
public LogInInfo GetCurrentInput()
Finished code
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