Xamarin.iOS でのアラートの表示Displaying Alerts in Xamarin.iOS

IOS 8 以降、UIAlertController が完成した置換 UIActionSheet とうち UIAlertView 両方が非推奨となりました。Starting with iOS 8, UIAlertController has completed replaced UIActionSheet and UIAlertView both of which are now deprecated.

UIAlertController とは異なり、このクラスに置き換え、UIView のサブクラスであり、UIViewController のサブクラスです。Unlike the classes it replaced, which are subclasses of UIView, UIAlertController is a subclass of UIViewController.

使用UIAlertControllerStyleを表示するアラートの種類を示します。Use UIAlertControllerStyle to indicate the type of alert to display. これらのアラートの種類は次のとおりです。These alerts types are:

  • UIAlertControllerStyleActionSheetUIAlertControllerStyleActionSheet
    • 前の iOS 8 を UIActionSheet をされたこれはPre-iOS 8 this would have been a UIActionSheet
  • UIAlertControllerStyleAlertUIAlertControllerStyleAlert
    • 前の iOS 8 この UIAlertView にされている場合Pre-iOS 8 this would have been UIAlertView

アラートのコント ローラーの作成時に実行するために必要な 3 つの手順があります。There are three necessary steps to take when creating an Alert Controller:

  • 作成し、アラートを a: 構成Create and configure the Alert with a:

    • タイトルtitle
    • messagemessage
    • preferredStylepreferredStyle
  • (省略可能)テキスト フィールドを追加します。(Optional) Add a text field

  • 必要なアクションを追加します。Add the Required actions

  • ビュー コント ローラーを表示します。Present the View Controller

最も単純なアラートには、このスクリーン ショットで示すように 1 つのボタンが含まれています。The simplest alert contains a single button, as shown in this screenshot:

1 つのボタンをアラートします。

単純なアラートを表示するコードは次のとおりです。The code to display a simple alert is as follows:

okayButton.TouchUpInside += (sender, e) => {

    //Create Alert
    var okAlertController = UIAlertController.Create ("Title", "The message", UIAlertControllerStyle.Alert);

    //Add Action
    okAlertController.AddAction (UIAlertAction.Create ("OK", UIAlertActionStyle.Default, null));

    // Present Alert
    PresentViewController (okAlertController, true, null);
};

複数のオプションを使用して通知を表示する同様の方法で行われますが、2 つのアクションを追加します。Displaying an alert with multiple options, is done in a similar fashion but add two actions. たとえば、次のスクリーン ショットでは、2 つのボタンでアラートが表示されます。For example, the following screenshot shows an alert with two buttons:

 2 つのボタンをアラートします。Alert with two Buttons

okayCancelButton.TouchUpInside += ((sender, e) => {

    //Create Alert
    var okCancelAlertController = UIAlertController.Create("Alert Title", "Choose from two buttons", UIAlertControllerStyle.Alert);

    //Add Actions
    okCancelAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, alert => Console.WriteLine ("Okay was clicked")));
    okCancelAlertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, alert => Console.WriteLine ("Cancel was clicked")));

    //Present Alert
    PresentViewController(okCancelAlertController, true, null);
});

アラートは、次のスクリーン ショットのようなアクション シートを表示もできます。Alerts can also display an action sheet, similar to the screenshot below:

アクション シートのアラート

ボタンのアラートに追加されて、AddActionメソッド。Buttons are added to the alert with the AddAction method:

actionSheetButton.TouchUpInside += ((sender, e) => {

    // Create a new Alert Controller
    UIAlertController actionSheetAlert = UIAlertController.Create("Action Sheet", "Select an item from below", UIAlertControllerStyle.ActionSheet);

    // Add Actions
    actionSheetAlert.AddAction(UIAlertAction.Create("OK",UIAlertActionStyle.Default, (action) => Console.WriteLine ("Item One pressed.")));

    actionSheetAlert.AddAction(UIAlertAction.Create("custom button 1",UIAlertActionStyle.Default, (action) => Console.WriteLine ("Item Two pressed.")));

    actionSheetAlert.AddAction(UIAlertAction.Create("Cancel",UIAlertActionStyle.Cancel, (action) => Console.WriteLine ("Cancel button pressed.")));

    // Required for iPad - You must specify a source for the Action Sheet since it is
    // displayed as a popover
    UIPopoverPresentationController presentationPopover = actionSheetAlert.PopoverPresentationController;
    if (presentationPopover!=null) {
        presentationPopover.SourceView = this.View;
        presentationPopover.PermittedArrowDirections = UIPopoverArrowDirection.Up;
    }

    // Display the alert
    this.PresentViewController(actionSheetAlert,true,null);
});