Xamarin.iOS
알리미
수색…
경고 표시
iOS 8 이후의 경고에서는 UIAlertController
사용하지만 이전 버전에서는 UIAlertView
사용했을 것입니다.이 UIAlertView
는 현재 사용되지 않습니다.
var alert = UIAlertController.Create(title, message, UIAlertControllerStyle.Alert);
alert.AddAction(UIAlertAction.Create(otherTitle, UIAlertActionStyle.Destructive, (action) => {
// otherTitle();
}));
alert.AddAction(UIAlertAction.Create(cancelTitle, UIAlertActionStyle.Cancel, null));
this.PresentViewController(alert, true, null);
var alert = new UIAlertView (title, message, null, cancelTitle, otherTitle);
alert.Clicked += (object sender, UIButtonEventArgs e) => {
if(e.ButtonIndex == 1)
// otherTitle();
};
alert.Show ();
로그인 경고 표시
다음 코드는 로그인 경고를 생성하기 위해 iOS 8 이하 버전 용입니다.
// Create the UIAlertView
var loginAlertView = new UIAlertView(title, message, null, cancelTitle, okTitle);
// Setting the AlertViewStyle to UIAlertViewStyle.LoginAndPasswordInput
loginAlertView.AlertViewStyle = UIAlertViewStyle.LoginAndPasswordInput;
// Getting the fields Username and Password
var usernameTextField = loginAlertView.GetTextField(0);
var passwordTextField = loginAlertView.GetTextField(1);
// Setting a placeholder
usernameTextField.Placeholder = "[email protected]";
passwordTextField.Placeholder = "Password";
// Adding the button click handler.
loginAlertView.Clicked += (alertViewSender, buttonArguments) =>
{
// Check if cancel button is pressed
if (buttonArguments.ButtonIndex == loginAlertView.CancelButtonIndex)
{
// code
}
// In our case loginAlertView.FirstOtherButtonIndex is equal to the OK button
if (buttonArguments.ButtonIndex == loginAlertView.FirstOtherButtonIndex)
{
// code
}
};
// Show the login alert dialog
loginAlertView.Show();
액션 시트 표시
iOS8 이후 UIAlertController
를 사용하면 액션 시트 나 고전적인 경고에 동일한 경고 객체를 사용할 수 있습니다. 유일한 차이점은 만들 때 매개 변수로 전달되는 UIAlertControllerStyle
입니다.
이 행은 AlertView에서 ActionSheet로 변경됩니다. 여기에서 사용할 수있는 몇 가지 다른 예제와 비교하면 다음과 같습니다.
var alert = UIAlertController.Create(title, message, UIAlertControllerStyle.ActionSheet);
컨트롤러에 액션을 추가하는 방법은 여전히 동일합니다.
alert.AddAction(UIAlertAction.Create(otherTitle, UIAlertActionStyle.Destructive, (action) => {
// ExecuteSomeAction();
}));
alert.AddAction(UIAlertAction.Create(cancelTitle, UIAlertActionStyle.Cancel, null));
//Add additional actions if necessary
매개 변수없는 void 메서드가있는 경우 .AddAction()
의 마지막 매개 변수로 사용할 수 있습니다.
예를 들어, "OK"를 누르면 private void DoStuff(){...}
코드가 실행될 것이라고 가정합니다.
UIAlertAction action = UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, DoStuff);
alert.AddAction(action);
주의 사항 DoStuff 다음에 ()를 사용하여 작업을 만들지 않습니다.
컨트롤러를 표시하는 방법은 다른 컨트롤러와 동일한 방식으로 수행됩니다.
this.PresentViewController(alert, true, null);
모달 경고 대화 상자 표시
사용자 입력이 iOS에서 처리 될 때까지 NSRunLoop
을 사용하여 모달 UIAlertView
를 UIAlertView
하여 코드 실행을 차단하는 것이 일반적입니다. 애플이 iOS7을 발표 할 때까지 기존 애플 리케이션은 거의 없었다. 다행히 C #의 비동기식 / 대기식으로 구현하는 더 좋은 방법이 있습니다.
모달 UIAlertView를 보여주기 위해 async / await 패턴을 이용하는 새로운 코드가 있습니다 :
Task ShowModalAletViewAsync (string title, string message, params string[] buttons)
{
var alertView = new UIAlertView (title, message, null, null, buttons);
alertView.Show ();
var tsc = new TaskCompletionSource ();
alertView.Clicked += (sender, buttonArgs) => {
Console.WriteLine ("User clicked on {0}", buttonArgs.ButtonIndex);
tsc.TrySetResult(buttonArgs.ButtonIndex);
};
return tsc.Task;
}
//Usage
async Task PromptUser() {
var result = await ShowModalAletViewAsync
("Alert", "Do you want to continue?", "Yes", "No"); //process the result
}