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,字体会显示红色。

时间: 2025-01-05 06:27:34

Swift完成UIAlertController的调用的相关文章

IOS开发:在Swift中使用JavaScript的方法和技巧

  在RedMonk发布的2015年1月编程语言排行榜中,Swift采纳率排名迅速飙升,从刚刚面世时的68位跃至22位,Objective-C仍然稳居TOP10,而JavaScript则凭借着其在iOS平台上原生体验优势成为了年度最火热的编程语言. 开发:在Swift中使用JavaScript的方法和技巧-"> 而早在2013年苹果发布的OS X Mavericks和iOS 7两大系统中便均已加入了JavaScriptCore框架,能够让开发者轻松.快捷.安全地使用JavaScript语言

窥探Swift之字符串(String)

之前总结过Objective-C中的字符串<Objective-C精选字符串处理方法>,学习一门新语言怎么能少的了字符串呢.Swift中的String和Objective-C语言中NSString还是区别不小的,Swift中的String又回归了正常状态,使用起来更为方便快捷.本篇博客的主题就是Swift中的字符串类型String,String在Swift中让人省心了不少.今天这篇博客就好好的认识一下Swift中的String. 一.字符串拷贝 在Swift中的字符串拷贝直接可以使用=号来操作

用Swift实现MD5算法&amp;amp;引入第三方类库(MBProgressHUD)

之前项目里面是用objc写的MD5加密算法,最近在用swift重写以前的项目,遇到了这个问题.好在最后解决了.顺带解决掉的还有如何引入第三方的类库,例如MBProgressHUD(SVProgressHUD)等一些特别好的控件 解决的方法其实是用objc和swift混合编程的方法,利用Bridging-header文件. 什么是Briding-header?你可以简单的理解为在一个用swift语言开发的工程中,引入objective-c文件是需要做的一个串联文件,好比架设了一个桥,让swift中

Swift要点:从Objective-C开发者的角度看Swift

代码环境是Xcode6.3-Beta3. Swift已经极大的改变了开发iOS应用的方式.本文中,我会列出Swift的几个重点,并且和Objective-C一一做出对比. 注意,本文不是Swift的入门指导.苹果发布了Swift Programming Language,强烈建议您读一读这本书.文本主要介绍Swift中比较酷炫的特性. 类型 Swift提供的第一个重大的改进是类型推断.使用了类型推断的编程语言,开发者不需要在声明中明确指定变量的类型.编译器会自动探知要赋给变量的值的类型.比如下面

如何才能编写高性能的 Swift 代码

文档中的一些技巧可以帮助提升您的 Swift 程序质量,使您的代码不容易出错且可读性更好.显式地标记最终类和类协议是两个显而易见的例子. 然而文档中还有一些技巧是不符合规矩的,扭曲的,仅仅解决一些比编译器或语言的特殊的临时性需求.文档中的很多建议来自于多方面的权衡,例如:运行时.字 节大小.代码可读性等等. 启用优化 第一个应该做的事情就是启用优化.Swift 提供了三种不同的优化级别: -Onone: 这意味着正常的开发.它执行最小优化和保存所有调试信息. -O: 这意味着对于大多数生产代码.

优雅的开发Swift和Objective-C混编的Framework

前言 为什么要写这样一篇文章,因为昨天和一个朋友讨论到Swift和Objective C如何混合开发Framework,中途发现了很多有意思的坑. 用Swift封装OC的库是一件比较常见的事情,毕竟对于大多数公司来说,老的代码都是用OC写的,而且经过多次迭代,这些OC的代码已经被验证了是稳定的,用Swift重写代价太大.这就引入了一个需求: 用Swift和OC来混编一个Framework. 如果你之前没有用Swift和Objective C混合开发,建议看看这篇文档: Swift and Obj

Object-C与Swift混合开发

Object-C作为Apple的iOS App开发语言服务了许多个年头,2014年Apple推出了新的编程语言Swift,更高效更安全的口号再次吸引了一大批非iOS开发程序员进入,小编认为Swift取代Object-C只是时间问题,在神州这片土地上,毕竟技术普及有些落后,但再有两年左右时间Swift产品链将形成,第三方支持框架逐步完善,Swift必将成为iOS开发主流.目前来看,激进派的现状Swift与Object-C混合开发. Object-C中调用Swift 下面就给大家分享下Object-

Swift 使用OpenCV2进行图片拼接(将多张照片合并成全景图)

1,OpenCV介绍 OpenCV的全称是:Open Source Computer Vision Library.是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法. 其应用领域有: 1.人机互动 2.物体识别 3.图像分割 4.人脸识别 5.动作识别 6.运动跟踪 7.机器人 8.运动分析 9.机器视觉 10.结构分析 11.汽车安全驾驶   2,使用OpenCV进行图片拼接 下面通过一个样例演示如何使用OpenCV将多张照片拼接成一个全景图.注意:照片与照片间要有

Swift中的常量和变量简单概述_Swift

1.在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 2.使用let来定义常量,定义之后不可以修改 3.使用var来定义变量,定义之后可以修改 4.定义常量和变量 常量:let 标识符的名称 : 类型 = 赋值 变量:var 标识符的名称 : 类型 = 赋值 5.类型的首字母要大写,常量与变量名不能包含数学符号,箭头 6.常量的使用注意 6.1 在开发中,apple建议优先使用常量,只有发现需要修改时再改成变量,因为常量更加安全,不会被任意的修改 6.2 常量的本质.