如何在iOS中实现弹出对话框?

在计算之后,我希望显示一个弹出框或警告框,向用户传递消息。有人知道我在哪里可以找到更多的信息吗?

322259 次浏览

是的,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

自iOS 8发布以来,UIAlertView现在已弃用;UIAlertController是替换。

下面是它在Swift 5中的示例:

let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK!", style: .default) { (sender: UIAlertAction) -> Void in
// ... Maybe handle "OK!" being tapped.
}
alert.addAction(alertAction)


// Show.
present(alert, animated: true) { () -> Void in
// ... Maybe do something once showing is complete.
}

如您所见,API允许我们实现对动作和呈现警报时的回调,这非常方便!

对于较旧的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
}

不同的人对弹出框的理解也不同。我强烈建议阅读临时视图文档。我的回答主要是对本文和其他相关文档的总结。

警报(举个例子)

enter image description here

警报显示标题和可选消息。在继续之前,用户必须确认它(一键提醒)或做出简单的选择(两键提醒)。你用UIAlertController创建一个警报。

值得引用文档中关于创建不必要警告的警告和建议。

enter image description here

注:

动作表(举个例子)

enter image description here

动作表给用户一个选项列表。它们要么显示在屏幕底部,要么显示在弹出窗口中,这取决于设备的大小和方向。与警报一样,UIAlertController用于创建操作表。在iOS 8之前,使用UIActionSheet,但现在文档表示:

重要的是: UIActionSheet在iOS 8中已弃用。(注意,UIActionSheetDelegate也已弃用。)要在iOS 8及以后版本中创建和管理操作表,请使用UIAlertControllerpreferredStyleUIAlertControllerStyleActionSheet

模态视图(举个例子)

enter image description here

模态视图是一个自包含视图,它拥有完成任务所需的一切。它可能会占据整个屏幕,也可能不会。要创建模态视图,可以使用UIPresentationController模态表示风格. properties中的一个。

另请参阅

弹窗(举个例子)

enter image description here

弹出窗口是一个视图,当用户点击某个东西时出现,当点击掉它时消失。它有一个箭头,显示控件或位置,从哪里进行点击。内容可以是任何你能放到视图控制器中的东西。你用UIPopoverPresentationController创建一个弹窗。(在iOS 8之前,UIPopoverController是推荐的方法。)

过去弹窗只在iPad上可用,但从iOS 8开始,你也可以在iPhone上获得它们(参见在这里在这里在这里)。

另请参阅

通知

enter image description here

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

enter image description here

另请参阅

  • 本地和远程通知编程指南
  • < a href = " https://nrj。io/ Simple -interactive-notifications-in- iOS -8/" rel="noreferrer"> iOS 8中的简单交互式通知 . io/ Simple -interactive-notifications-in- iOS -8/" rel="noreferrer">

关于Android toast的注意事项

enter image description here

在Android中,烤面包是一条短消息,它会在屏幕上显示一小段时间,然后在不中断用户与应用程序交互的情况下自动消失。

有Android背景的人想知道iOS版本的Toast是什么。这些问题的一些例子可以找到在这里在这里在这里在这里。答案是iOS中没有类似Toast的功能。提出的各种变通办法包括:

  • 用子类UIView创建你自己的
  • 导入一个模仿Toast的第三方项目
  • 使用带有计时器的无按钮警报

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

由于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"方法用于弹出窗口。

对于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 want 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()

将委托添加到视图控制器:

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();

虽然我已经写了一个不同类型的弹出窗口的概述,大多数人只需要一个警报。

如何实现弹出对话框

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

我更完整的答案是在这里