web-dev-qa-db-ja.com

iOSでポップダイヤログボックスを実装する方法

計算の後、ポップアップメッセージまたは警告ボックスを表示してメッセージをユーザーに伝えます。誰が私がこれに関するより多くの情報を見つけることができる場所を知っていますか?

291
Namratha

うん、UIAlertViewはおそらくあなたが探しているものです。これが例です:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection" 
                                                message:@"You must be connected to the internet to use this app." 
                                               delegate:nil 
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
[alert show];
[alert release];

もっと洒落たものにしたい場合、例えばUIAlertViewにカスタムUIを表示する場合、UIAlertViewをサブクラス化してinitメソッドにカスタムUIコンポーネントを入れることができます。 UIAlertViewが表示された後にボタンを押したときに応答する場合は、上記のdelegateを設定して- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndexメソッドを実装します。

UIActionSheetも調べてください。

515
donkim

この問題に遭遇する人が異なれば、ポップアップボックスによって異なることを意味します。 一時ビュー のドキュメントを読むことを強くお勧めします。私の答えは主にこれと他の関連ドキュメントの要約です。

アラート (例を表示)

enter image description here

アラート はタイトルとオプションのメッセージを表示します。ユーザーは先に進む前にそれを承認するか(1ボタン警告)または簡単な選択をする(2ボタン警告)必要があります。アラートを UIAlertController で作成します。

不必要な警告を作成することに関するドキュメントの警告とアドバイスを引用する価値があります。

enter image description here

ノート:

アクションシート (例を見せてください)

enter image description here

アクションシート はユーザーに選択肢のリストを提供します。デバイスのサイズと向きに応じて、画面の下部またはポップオーバーに表示されます。アラートと同様に、UIAlertControllerはアクションシートを作成するために使用されます。 iOS 8より前のバージョンでは、UIActionSheetが使用されていましたが、 のドキュメント には次のように記載されています。

重要:UIActionSheetはiOS 8で廃止されました。(UIActionSheetDelegateも廃止予定です)iOS 8以降でアクションシートを作成および管理するには、代わりに UIAlertControllerを使用してください。preferredStyle / UIAlertControllerStyleActionSheet

モーダルビュー (例を見せる)

enter image description here

モーダルビュー は、タスクを完了するために必要なものがすべて含まれている自己完結型のビューです。全画面表示になる場合としない場合があります。モーダルビューを作成するには、 UIPresentationControllerモーダル表示スタイル のいずれかと共に使用します。

また見なさい

Popover (例を示してください)

enter image description here

A Popover is a view that appears when a user taps on something and disappears when tapping off it. It has an arrow showing the control or location from where the tap was made. The content can be just about anything you can put in a View Controller. You make a popover with a UIPopoverPresentationController . (Before iOS 8, UIPopoverController was the recommended method.)

これまでポップオーバーはiPadでしか利用できませんでしたが、iOS 8以降ではiPhoneでも利用できます( こちらこちら 、ここで)。

また見なさい

通知

enter image description here

通知 は、アプリがフォアグラウンドで実行されていなくても、ユーザーに何かを知らせる音/振動、警告/バナー、またはバッジです。

enter image description here

また見なさい

Androidトーストに関するメモ

enter image description here

Androidでは、 Toast は短いメッセージで、画面に短時間表示された後、ユーザーによるアプリの操作を中断することなく自動的に消えます。

Androidの経歴を持つ人々は、ToastのiOS版が何であるかを知りたがっています。これらの質問のいくつかの例は、彼が ここここここ 、および を見つけることができるこちら その答えは、iOSのToastに相当するものはないということです。提示されているさまざまな回避策は次のとおりです。

  • サブクラス化されたUIViewであなた自身のものを作りなさい
  • Toastを模したサードパーティプロジェクトをインポートする
  • タイマー付きのボタンなしアラートを使用する

しかし、私のアドバイスは、すでにiOSに付属している標準のUIオプションを使用することです。アプリをAndroidのバージョンとまったく同じように見せて動作させるようにしないでください。それがiOSアプリのように見え、感じられるようにそれを再パッケージする方法について考えてください。

164
Suragch

IOS 8のリリース以来、UIAlertViewは現在非推奨です。 UIAlertController が置き換えられます。

これがSwiftの外観の例です。

let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertActionStyle.default)
{
    (UIAlertAction) -> Void in
}
alert.addAction(alertAction)
present(alert, animated: true)
{
    () -> Void in
}

ご覧のとおり、APIを使用すると、アクションとアラートの提示時の両方にコールバックを実装できます。これは非常に便利です。

Swift 4.2用に更新されました

let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertController.Style.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertAction.Style.default)
        {
            (UIAlertAction) -> Void in
        }
        alert.addAction(alertAction)
        present(alert, animated: true)
        {
            () -> Void in
        }
58
Entalpi

iOS 8.0用に更新されました

IOS 8.0以降、次のようにUIAlertControllerを使用する必要があります。

-(void)alertMessage:(NSString*)message
{
    UIAlertController* alert = [UIAlertController
          alertControllerWithTitle:@"Alert"
          message:message
          preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction 
          actionWithTitle:@"OK" style:UIAlertActionStyleDefault
         handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
}

私の例ではselfはUIViewControllerです。これはポップアップの "presentViewController"メソッドを実装しています。

ダビデ

24
us_david

Swift 3とSwift 4の場合:

UIAlertViewは廃止予定なので、Swift 3でアラートを表示するための良い方法があります

let alertController = UIAlertController(title: NSLocalizedString("No network connection",comment:""), message: NSLocalizedString("connected to the internet to use this app.",comment:""), preferredStyle: .alert)
let defaultAction = UIAlertAction(title:     NSLocalizedString("Ok", comment: ""), style: .default, handler: { (pAlert) in
                //Do whatever you wants here
        })
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)

非推奨:

これは、チェックされた応答に触発されたSwiftのバージョンです。

AlertViewを表示します。

   let alert = UIAlertView(title: "No network connection", 
                           message: "You must be connected to the internet to use this app.", delegate: nil, cancelButtonTitle: "Ok")
    alert.delegate = self
    alert.show()

View Controllerにデリゲートを追加します。

class AgendaViewController: UIViewController, UIAlertViewDelegate

ユーザーがボタンをクリックすると、このコードが実行されます。

func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {


}
10
Kevin ABRIOUX

私はすでに 概要 の異なる種類のポップアップを書きましたが、ほとんどの人はただAlertを必要としています。

ポップアップダイアログボックスを実装する方法

enter image description here

class ViewController: UIViewController {

    @IBAction func showAlertButtonTapped(_ sender: UIButton) {

        // create the alert
        let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertController.Style.alert)

        // add an action (button)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))

        // show the alert
        self.present(alert, animated: true, completion: nil)
    }
}

私のより完全な答えは ここ です。

6
Suragch

これはXamarin.iOSのC#バージョンです。

var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();
0
Art Drozdov