サーチ…


アラートを表示する

iOS 8以降のアラートではUIAlertControllerを使用し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();

アクションシートを表示する

UIAlertController以降、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で処理されるまで、コード実行をブロックするためにモーダルUIAlertViewを表示するには、 NSRunLoopを使用するのが一般的でした。 Appleが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