IOS学習のUALert Controller

5907 ワード

転載してから http://www.cocoachina.com/ios/20141126/10320.html
iOS 8の新しい特性の一つは、インターフェースをより適応させ、より柔軟にすることで、多くのビューコントローラの実現方法に大きな変化が生じている.新しいUICPresentationControllerは、ビューコントローラ間の遷移アニメーション効果と適応デバイスサイズの変化効果(例えば回転)を実現するために重要な役割を果たし、プログラマたちの仕事量(天地良心)を効果的に節約しました.また、いくつかの古いUICKコントロールも同様に多くの変化が発生しています.例えばAlert View、アクションSheets、Popovers、およびSearch Bar Controllerなどです.本論文ではAlert ViewとAct Sheetsの発生した変化について大まかに紹介します.Objective-Cとswiftの2つの言語を使って同時にコード説明を行います.
UAlertView
アップルの最後のiOS 5のリリースに伴い、ダイアログの表示パターンは私たちの前に現れました.今まで大きな変化がありませんでした.以下のコードセグメントは、キャンセルと「はい」ボタンのあるダイアログビューを初期化して表示する方法を示しています.
Objective-Cバージョン:
1
2UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@" "  message:@" UIAlertView "  delegate:self cancelButtonTitle:@" "  otherButtonTitles:@" ", nil];[alertview show];UALertViewのデフォルトスタイル
swiftバージョンとObjective-Cバージョンは違っています.swiftでは、alertViewの初期化はキャンセルボタンがあるダイアログビューだけを作成することができます.other ButtionTitlesを持ったinit方法が見られますが、残念ながら、この方法はコンパイルによってはいけません.
1
2var  alertView = UIAlertView(title: " ", message: " UIAlertView ", delegate: self, cancelButtonTitle: " ")alertView.show()swiftバージョンのUALertView
上のObjective-Cのバージョンと同じダイアログビューを作成するには、私たちは曲線救国の方法を取ることができます.面倒ですが、目的のためには手段を選ばなくてもいいですよね?
1
2
3
4
5
6
7var  alertView = UIAlertView()alertView.delegate = selfalertView.title = " "alertView.message = " UIAlertView "alertView.addButtonWithTitle(" ")alertView.addButtonWithTitle(" ")alertView.show()UALertViewのalertViewスタイルの属性を変更することによって、入力テキスト、パスワード、またはログインボックスの効果を実現することもできます.
UAlertView登録ダイアログ
UALertView Delegateプロトコルは、ダイアログビューのボタン動作に応答するコールバック方法を有する.また、テキストボックスの内容が変更された場合には、alertView ShoruldEnbaleOther Buttonを呼び出す方法は、ボタンを動的に使用するか、または使用できないようにすることができます.
アップルの公式は現在、iOS 8でUAlertViewを使用することを提唱していません.代わりにUAlert Controllerです.UAlert Controllerの使い方を紹介します.
UAlert Controller
iOS 8では、UAlert Controllerは、機能的にはUAlertViewおよびUICActionit Sheetと同じであり、UICAlert Controllerは、2つの貨物の機能と役割を代替するためにモジュール化されている.ダイアログを使用しますか?それともプルダウンメニューを使用しますか?コントローラを作成する時、どのように選択したスタイルを設定するかによって異なります.
簡単なダイアログの例
二つの異なる作成ダイアログのコードを比較して、基本的なUALert Controllerを作成するコードとUALertViewを作成するコードは非常に似ています.
Objective-Cバージョン:
1UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@" "  message:@" UIAlertController "  preferredStyle:UIAlertControllerStyleAlert];swiftバージョン:
1var  alertController = UIAlertController(title: " ", message: " UIAlertController ", preferredStyle: UIAlertControllerStyle.Alert)UALertViewを作成するよりも、プロキシを指定する必要はありません.初期化中にボタンを指定する必要もありません.ただし、3番目のパラメータに注意して、選択されたのはダイアログスタイルですか?それともプルダウンメニュースタイルですか?
UALertActionの例を作成することにより、動作ボタンをコントローラに追加することができます.UALertActionは、タイトル文字列、スタイル、およびユーザがこの動作を選択したときに実行されるコードブロックから構成される.UALert ActionsStyleを通じて、以下の3つの動作スタイルを選択できます.通常、キャンセル、警告の3つがあります.UALertViewを作成する際に作成したボタン効果を実現するためには、この二つのアクションボタンを作成してコントローラに追加すればいいです.
Objective-Cバージョン:
1
2
3
4UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@" "  style:UIAlertActionStyleCancel handler:nil];UIAlertAction *okAction = [UIAlertAction actionWithTitle:@" "  style:UIAlertActionStyleDefault handler:nil];[alertController addAction:cancelAction];[alertController addAction:okAction];swiftバージョン:
1
2
3
4var  cancelAction = UIAlertAction(title: " ", style: UIAlertActionStyle.Cancel, handler: nil)var  okAction = UIAlertAction(title: " ", style: UIAlertActionStyle.Default, handler: nil)alertController.addAction(cancelAction)alertController.addAction(okAction)最後に、このダイアログビューのコントローラを表示するだけでいいです.
Objective-Cバージョン:
1[self presentViewController:alertController animated:YES completion:nil];swiftバージョン:
1self.presentViewController(alertController, animated: true, completion: nil)UAlert Controllerデフォルトスタイル
ボタンの表示の順序は、ダイアログコントローラに追加される順序によって異なります.一般的には、アップルの公式設定による「iOSユーザインタフェースガイド」は、2つのボタンがあるダイアログで、キャンセルボタンを左に置くべきです.注意したいのですが、キャンセルボタンは唯一です.第二のキャンセルボタンを追加すれば、次のような運行時に異常が発生します.
*Terminating ap due to uncagt exception‘NSInternal InconsistencyException’、reason:“UALert Controller can only have one action with a style of UALertAction Style Cance”
異常情報は簡潔で明瞭であり、ここでは詳しく説明しない.
「警告」様式
何が「警告」の形ですか?私たちはこの問題に慌てずに答えます.まず、以下の「警告」様式の簡単な例を見てみます.この例では、前の例の「はい」ボタンを「リセット」ボタンに置き換えます.
Objective-Cバージョン:
1
2UIAlertAction *resetAction = [UIAlertAction actionWithTitle:@" "  style:UIAlertActionStyleDestructive handler:nil];[alertController addAction:resetAction];swiftバージョン:
1
2var  resetAction = UIAlertAction(title: " ", style: UIAlertActionStyle.Destructive, handler: nil)alertController.addAction(resetAction)「警告」様式
私たちが追加した「リセット」ボタンが赤に変わったことが分かります.アップルの公式の定義によると、「警告」のボタンは、データを変更または削除する可能性がある操作に使われます.そのため、赤色の目立つ表示を使ってユーザーに警告しています.