수색…


경고 표시

iOS 8 이후의 경고에서는 UIAlertController 사용하지만 이전 버전에서는 UIAlertView 사용했을 것입니다.이 UIAlertView 는 현재 사용되지 않습니다.

8.0
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);
8.0
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 을 사용하여 모달 UIAlertViewUIAlertView 하여 코드 실행을 차단하는 것이 일반적입니다. 애플이 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
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow