Swift完成UIAlertController的调用

简介:

iOS8中的UIAlertView和UIActionSheet已经都被UIAlertViewController代替了,所以,本篇blog就来探讨下如何用swift生成提示框。

我们先来看一下Apple的UIAlertController的文档:

import Foundation
import UIKit

//
//  UIAlertController.h
//  UIKit
//
//  Copyright (c) 2014 Apple Inc. All rights reserved.
//

@availability(iOS, introduced=8.0)
enum UIAlertActionStyle : Int {
    
    case Default
    case Cancel
    case Destructive
}

@availability(iOS, introduced=8.0)
enum UIAlertControllerStyle : Int {
    
    case ActionSheet
    case Alert
}

@availability(iOS, introduced=8.0)
class UIAlertAction : NSObject, NSCopying {
    
    convenience init(title: String, style: UIAlertActionStyle, handler: ((UIAlertAction!) -> Void)!)
    
    var title: String { get }
    var style: UIAlertActionStyle { get }
    var enabled: Bool
}

@availability(iOS, introduced=8.0)
class UIAlertController : UIViewController {
    
    convenience init(title: String?, message: String?, preferredStyle: UIAlertControllerStyle)
    
    func addAction(action: UIAlertAction)
    var actions: [AnyObject] { get }
    func addTextFieldWithConfigurationHandler(configurationHandler: ((UITextField!) -> Void)!)
    var textFields: [AnyObject]? { get }
    
    var title: String?
    var message: String?
    
    var preferredStyle: UIAlertControllerStyle { get }
}

我们可以看到UIAlertController的style有两个,一个是ActionSheet,一个是Alert,而AlertActionStyle有3个: Default,Cancel, Destructive;所以我们新建Alert时可以这样:

var alert: UIAlertController = UIAlertController(title:nil, message:"您输入的电话号码有误,请检查后重新输入",
                preferredStyle:UIAlertControllerStyle.Alert)

或者

var alert: UIAlertController = UIAlertController(title: nil, message:"test", preferredStyle: UIAlertControllerStyle.ActionSheet)


接下来我们来给Alert添加action,从文档中可以看到AlertAction有init函数,

我们来新建3个actions

var saveAction = UIAlertAction(title: "Save", style: .Default, handler:{
                    (alerts: UIAlertAction!) -> Void in
                    println("File saved")
                })
                var deleteAction = UIAlertAction(title: "Delete", style: .Default, handler:{
                    (alerts: UIAlertAction!) -> Void in
                    println("File delete")
                })
                var cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler:{
                    (alerts: UIAlertAction!) -> Void in
                    println("Cancelled")
                })
注意到handler中用到了一个closure

然后给我们的alertcontroller添加actions,并把它显示出来

 alert.addAction(saveAction)
                alert.addAction(deleteAction)
                alert.addAction(cancelAction)
                
                self.presentViewController(alert, animated: true, completion: nil)

我们也可以这样添加action

alert.addAction(UIAlertAction(title: "确定", style: .Destructive, handler: {
                action in switch action.style{
                case .Default:
                    println("ok")
                case .Cancel:
                    println("cancel")
                case .Destructive:
                    println("Destructive")
                    }
                }
            ))
接下来运行一下看看我们的alertController是什么样子的吧。

Tips:

如果style是cancel 那么字体会变粗;如果是destructive,字体会显示红色。



目录
相关文章
|
Swift
Swift - UIAlertController的简单使用
Swift - UIAlertController的简单使用
117 0
Swift - UIAlertController的简单使用
|
Swift iOS开发
Swift UI专项训练35 UIAlertController
   之前我们介绍过AlertView和ActionSheet的用法,前者显示在页面中,而后者是从页面底部飞入的。
1042 0
|
4月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
106 2
|
3月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
213 2
|
4月前
|
监控 Swift iOS开发
局域网计算机监控软件中利用Swift构建iOS端的移动监控应用
在局域网计算机监控软件的开发中,构建iOS端的移动监控应用是一项关键任务。本文将介绍如何利用Swift语言实现这一目标,通过多个代码示例展示关键功能的实现。
225 1
|
4月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
76 0
|
6月前
|
JavaScript 前端开发 PHP
用swift开发ios移动端app应用初体验
直接跟着 apple 官方的 SwiftUI 教程跑的,写惯了 javascript 奔放的代码,很多语法理解起来还是有点费劲
59 1
|
8月前
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
50 0