經過計算,我想顯示一個彈出窗口或提示框,向用戶傳達一條消息。有誰知道我在哪裏可以找到更多關於這方面的信息?如何在iOS中實現彈出對話框
回答
是的,一個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
,放在自定義UI組件的init
方法。如果您想在出現UIAlertView
後回覆按鈕按鈕,則可以設置上面的delegate
並實施- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
方法。您可能還想看看UIActionSheet
。
自從iOS 8發佈以來,UIAlertView現在已被棄用。現在您將使用UIAlertController。
下面是一個示例中的樣子斯威夫特
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使我們能夠實現這兩個回調的動作,當我們提出這是非常方便的警惕!
不同的人來到這個問題意味着通過彈出框不同的事情。我強烈建議閱讀Temporary Views文檔。我的答案主要是對這個和其他相關文件的總結。
警報(show me an example)
Alerts顯示一個標題和一個可選的消息。在繼續之前,用戶必須確認它(一鍵通知)或做出簡單的選擇(雙鍵警報)。您使用UIAlertController
創建警報。
值得引用關於創建不必要的警報的文檔警告和建議。
注:
- 又見Alert Views,但在iOS的8
UIAlertView
開始被廢棄。您應該立即使用UIAlertController
來創建警報。 - iOS Fundamentals: UIAlertView and UIAlertController(教程)
行動表上(show me an example)
Action Sheets給用戶的選擇列表。它們出現在屏幕的底部或彈出窗口,具體取決於設備的大小和方向。與警報一樣,UIAlertController
用於製作操作表。iOS的8之前,UIActionSheet
使用,但現在documentation說:
要點:(注意:
UIActionSheetDelegate
也已過時)UIActionSheet
在iOS的8棄用創建和iOS 8的管理動作片和之後,替代地使用UIAlertController
和preferredStyle
的UIAlertControllerStyleActionSheet
。
模式的看法(show me an example)
一個modal view是具有它需要完成任務的一切自包含的視圖。它可能會或可能不會佔用整個屏幕。要創建模態視圖,請將UIPresentationController
與Modal Presentation Styles之一一起使用。
參見
酥料餅(show me an example)
甲Popover是一個視圖當用戶點擊某物並在點擊時消失時出現。它有一個箭頭顯示了水龍頭的製造位置。內容可以是任何可以放入View Controller的內容。你用UIPopoverPresentationController
做一個popover。 (iOS版8之前,UIPopoverController
是推薦的方法。)
在過去popovers只在iPad上使用,但與iOS 8日起,你也可以讓他們在iPhone上(見here,here和here)。
又見
通知
Notifications的聲音/振動,警報/橫幅,或徽標,通知的東西,用戶即使在應用程序未在前臺運行。
又見
關於Android祝酒詞的說明
在Android中,Toast是一條短消息,在屏幕上顯示一小段時間,然後自動消失,而不會中斷用戶與應用的交互。
來自Android背景的人們想知道什麼是Toast的iOS版本。這些問題的一些例子可以發現here,here,here和here。答案是在iOS中沒有相當於Toast的東西。已經提出的各種解決辦法包括:
- 使自己有一個子類
UIView
- 導入模仿舉杯
- 使用釦子警報帶有計時器的第三方項目
然而,我的建議是堅持使用iOS已有的標準UI選項。不要試圖讓您的應用的外觀和行爲與Android版本完全相同。想想如何重新包裝它,使它看起來像一個iOS應用程序。
更新的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];
}
凡自我在我的例子是一個UIViewController,它實現了 「presentViewController」 方法爲一個彈出。
大衛
對於斯威夫特3 &斯威夫特4:
由於UIAlertView中已被棄用,有一個顯示報警的好辦法上斯威夫特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)
推薦使用:
這是迅捷版本通過檢查響應啓發:
顯示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()
委託添加到您的視圖控制器:
class AgendaViewController: UIViewController, UIAlertViewDelegate
當按鈕用戶點擊,該代碼就會被執行:
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
}
這裏是Xamarin.iOS的C#版本
var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();
雖然我已經寫了一個overview不同類型的彈出窗口,但大多數人只需要一個Alert。
如何實現一個彈出式對話框
class ViewController: UIViewController {
@IBAction func showAlertButtonTapped(_ sender: UIButton) {
// create the alert
let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertControllerStyle.alert)
// add an action (button)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
// show the alert
self.present(alert, animated: true, completion: nil)
}
}
我更全面的回答是here。
- 1. 如何在IOS中爲彈出對話框實現導航欄?
- 2. 彈出對話框 - iOS
- 3. 如何實現在頁面內彈出的登錄對話框
- 4. 如何在XNA中實現對話框
- 5. 如何在Jquery UI對話框中實現「確認」對話框?
- 6. iOS Airprint不顯示彈出對話框
- 7. 與IOS上的CollectionView彈出對話框
- 8. Android - 如何實現列表框作爲模式對話框/彈出框
- 9. 彈出對話框
- 10. 如何在Android中實現登錄彈出對話框,直到註銷纔會彈出?
- 11. 如何彈出Android對話框
- 12. 如何關閉彈出對話框?
- 13. 如何添加彈出對話框?
- 14. 如何彈出「連接到」對話框?
- 15. 在Facebook對話框中彈出FBML對話框
- 16. android:彈出菜單,彈出對話框
- 17. 對話框或在pickList中彈出PrimeFaces
- 18. Android - Webview在彈出對話框中?
- 19. 如何在iOS中彈出評論框?
- 20. jQuery對話框彈出
- 21. JQuery-mobile彈出/對話框?
- 22. WIX彈出對話框
- 23. Android彈出對話框
- 24. 創建對話框/彈出
- 25. 顯示彈出對話框
- 26. 彈出窗口對話框
- 27. 彈出對話框問題
- 28. 彈出樣式對話框
- 29. asp.net mvc&彈出對話框
Apple文檔中提到「UIAlertView類旨在按原樣使用,不支持子類」。 https://developer.apple.com/library/ios/#documentation/uikit/reference/UIAlertView_Class/UIAlertView/UIAlertView.html – JOM 2012-02-06 05:34:35
只是一個評論:啓用ARC後,'[alert release]'是不需要的(至少,編譯器這樣說)。 – 2012-10-02 10:02:05
UIAlertView的子類化不支持iOS 4以上 – SourabhV 2012-10-29 18:07:36