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

时间: 2024-08-08 17:35:03

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

Swift详解UIImagePickerController调用相册相机功能

首先,添加UINavigationControllerDelegate和UIImagePickerControllerDelegate两项protocol. 使用UIImagePickerController,就必须实现UINavigationControllerDelegate这个protocol,因为调用过程中会出现NavigationBar,如果没实现,也不会说运行不了.只是Xcode会直接就给你一个warning. 直接上自己用swift写的一个设置头像的小demo,可直接复制使用.注释

Swift基础--调用第三方OC项目

第一步:创建和配置Bridging-Header.h Swift与OC进行混编,首先要有一个.h文件,这里使用Bridging-Header.h然后设置项目的Build Settings--Swift Compiler--Objective-C Bridging Header内容为DemoApp/Bridging-Header.h,这个与Bridging-Header.h位置有关,从项目的根目录开始在Objective-C Bridging Header选项里面写入Bridging-Header

【Swift】UIAlertController使用

func clickButton1(){ 创建uialertcontroller var alertCtl : UIAlertController = UIAlertController(title: "Alert", message: "You clicked button1", preferredStyle: UIAlertControllerStyle.Alert) 添加action到uialertcontroller,action是UIalertcontro

Swift调用sha1算法

在Swift中通过调用OC的CommonCrypto库可以很方便的实现String字符串转换为sha1. 在一个swift项目中,需要使用桥接头文件(Bridging header)的方式来引入一个OC库,才能调用OC中的内容. 本文也将作为Swift项目中如何调用Objective-C代码的一个介绍. 标准实现步骤 1.新建一个Objective-C  m文件 2.点击Next,输入文件名(这个文件后面可以删掉),选择保存位置,默认直接确定即可,保存在当前项目目录,然后Xcode会自动提示我们

swift 调用 webservice

作为一门比较新的语言,swift的教程实在是少之又少,更不用说如何说swift在调用其他框架方面的教程了,今天就花了很多的时间来实现swift调用webservice. 首先ios调用webservice基本上搜索到的都是oc来实现的,关于swift如何调用oc请自行google,所以问题就等同于oc如何调用webservice,在这里给大家提供一个非常快捷的网站,用来生成soap的发送与解析工具:http://easywsdl.com/WsdlGenerator 生成的文件夹里面包括了导入的方

Swift和Objective-C混合编程——Swift调用OC

在iOS应用的开发中,Swift必将取代OC,两者的趋势是"短期共存,长期取代".但以前有太多的代码是用OC语言完成的,而Swift的开发也从 OC中继承了很多的特性,两者也是有很多的类似之处.目前Swift和OC可以实现无缝的混合编程. 我这里会实现一个简单的Swift调用OC的iOS实例,实现过程是十分的简单的.就像我们所有的Hello World一样.具体操作步骤如下: (1)Xcode中新建一个iOS项目,语言选择Swift,设备选择iPhone.目录结构如下: (2)然后在该

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 与 OC 混编

在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC.但现在也快了啊.有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来,并且某些swift的功能你还不会写,想用OC写.因此在swift开发的程序中时不时会用到OC的类,怎么让两门语言在一个程序里无缝衔接? 其实很方便 如果你不是在董铂然博客园看到本文请 点击查看原文 如图这是一个新建的swift项目,里面直接拖入了一个SVProgressHUD框架 因为swift语言

2.Swift的playground与OC语法对比

1.playground 1.1 简介 在2014年的WWDC大会上,苹果公司正式公布了Swift——一款面向苹果移动设备软件开发工作的全新编程语言.为了配合新语言的诞生,Xcode 6新增了一项名为Playgrounds的功能——这其实是一套交互工作区,开发人员可以在此编写Swift代码并在无需将其运行在设备或者模拟器中的前 提下获取实时运行效果反馈.这对于Xcode来说无疑是一种很好的补充,现在各位可以在将自己的代码成果正式添加到主代码库内之前,以实验性方式快速便捷 地掌握地实时运行效果 1