如何在iOS中实现popup对话框

经过计算,我想显示一个popup窗口或提示框向用户传达一条消息。 有谁知道在哪里可以find更多关于这方面的信息?

是的,一个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出现后按下button,你可以设置上面的delegate并实现- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex方法。

你可能也想看看UIActionSheet

不同的人来到这个问题意味着不同的东西,popup框。 我强烈build议阅读“ 临时视图”文档。 我的答案主要是这个和其他相关文件的总结。

警报(给我一个例子)

在这里输入图像描述

警报显示标题和可选消息。 用户必须先确认(一键通知),或者在继续之前进行简单的select(双键警报)。 您使用UIAlertController创build警报。

值得引用有关创build不必要警报的文档警告和build议。

在这里输入图像描述

笔记:

  • 另请参阅警报视图 ,但从iOS 8开始,不build议使用UIAlertView 。 您应该使用UIAlertController现在创build警报。
  • iOS基础知识:UIAlertView和UIAlertController (教程)

操作表(给我一个例子)

在这里输入图像描述

操作表给用户一个select列表。 根据设备的大小和方向,它们出现在屏幕底部或popup窗口中。 与警报一样, UIAlertController用于制作操作表。 在iOS 8之前,使用了UIActionSheet ,但现在文档说:

重要提示: UIActionSheet在iOS 8中已弃用。(请注意, UIActionSheetDelegate也被弃用。)要在iOS 8及更高版本中创build和pipe理操作表,请使用UIAlertControllerpreferredStyleUIAlertControllerStyleActionSheet

模态视图(给我看一个例子)

在这里输入图像描述

模态视图是一个独立的视图,具有完成任务所需的一切。 它可能会或可能不会占满整个屏幕。 要创build模态视图,请使用带有模态演示样式之一的UIPresentationController

也可以看看

  • 从其他视图控制器呈现视图控制器
  • 模态上下文

Popover (给我看一个例子)

在这里输入图像描述

Popover是一个视图,当用户点击某个东西时会出现,当点击时消失。 它有一个箭头显示控制或从哪里制作水龙头的位置。 内容可以是任何你可以放在视图控制器。 你用UIPopoverPresentationController做一个UIPopoverPresentationController 。 (在iOS 8之前, UIPopoverController是推荐的方法。)

在过去,iPad只能提供popup窗口,但是从iOS 8开始,你也可以在iPhone上看到它们(见这里 , 这里和这里 )。

也可以看看

  • 视图控制器:Popovers

通知

在这里输入图像描述

通知是声音/振动,警报/横幅,或徽章,即使应用程序没有在前台运行时也会通知用户。

在这里输入图像描述

也可以看看

  • 本地和远程通知编程指南
  • iOS 8中的简单交互式通知

有关Android Toast的说明

在这里输入图像描述

在Android中, Toast是一个短消息,在屏幕上显示一小段时间,然后自动消失,而不会中断用户与应用的交互。

来自Android背景的人们想要知道什么是Toast的iOS版本。 这些问题的一些例子可以在这里find, 在这里 , 在 这里 。 答案是iOS中没有相当于Toast的东西 。 已经提出的各种解决方法包括:

  • 让你自己的一个子类UIView
  • 导入模仿Toast的第三方项目
  • 用定时器使用无button警报

不过,我的build议是坚持iOS的标准UI选项。 不要试图让你的应用看起来和行为完全一样的Android版本。 想想如何重新包装它,使其外观和感觉像一个iOS应用程序。

自从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允许我们实现callback和动作,以及当我们提出相当方便的警报时。

更新了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,它实现了一个popup窗口的“presentViewController”方法。

大卫

对于Swift 3和Swift 4:

由于UIAlertView不推荐使用,因此在Swift 3上显示Alert的好方法

 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 

当用户点击button,这个代码将被执行:

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

虽然我已经写了不同types的popup窗口的概述 ,但大多数人只需要一个警报。

如何实现一个popup对话框

在这里输入图像描述

 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) } } 

我更完整的答案在这里 。

这里是Xamarin.iOS中的C#版本

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