ios开发——实用技术篇Swift篇&地址薄、短信、邮件

  1     //返回按钮事件
  2     @IBAction func backButtonClick()
  3     {
  4         self.navigationController?.popViewControllerAnimated(true)
  5     }
  6
  7     //新增联系人
  8     @IBAction func addPeople ()
  9     {
 10         //取得电话薄句柄
 11         var error:Unmanaged<CFError>?
 12         var addressBook: ABAddressBookRef? = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
 13
 14         var newContact:ABRecordRef! = ABPersonCreate().takeRetainedValue()
 15         var success:Bool = false
 16
 17         //昵称
 18         success = ABRecordSetValue(newContact, kABPersonNicknameProperty, "Gaven", &error)
 19         println("设置昵称是否成功: \(success)")
 20
 21         //设置姓
 22         success = ABRecordSetValue(newContact, kABPersonFirstNameProperty, "zhang", &error)
 23         println("设置姓是否成功: \(success)")
 24
 25         //设置名
 26         success = ABRecordSetValue(newContact, kABPersonLastNameProperty, "wu", &error)
 27         println("设置名是否成功:\(success)")
 28
 29         //添加电话
 30         let tmpMutableMultiPhones:ABMutableMultiValue = ABMultiValueCreateMutable(
 31             ABPropertyType(kABStringPropertyType)).takeRetainedValue()
 32
 33         success = ABMultiValueAddValueAndLabel(tmpMutableMultiPhones, "15901234000", "companyPhone", nil);
 34         println("设置电话标题是否成功:\(success)")
 35
 36         success = ABRecordSetValue(newContact, kABPersonPhoneProperty, tmpMutableMultiPhones, nil)
 37         println("设置电话是否成功:\(success)")
 38
 39         //添加邮箱
 40         let addr:ABMutableMultiValue = ABMultiValueCreateMutable(
 41             ABPropertyType(kABStringPropertyType)).takeRetainedValue()
 42         ABMultiValueAddValueAndLabel(addr, "[email protected]", "companyEmail", nil)
 43         println("设置邮箱标题是否成功:\(success)")
 44
 45         ABRecordSetValue(newContact, kABPersonEmailProperty, addr, nil)
 46         println("设置邮箱是否成功:\(success)")
 47
 48         //保存记录
 49         success = ABAddressBookAddRecord(addressBook, newContact, &error)
 50         println("保存记录是否成功:? \(success)")
 51
 52         //保存数据库
 53         success = ABAddressBookSave(addressBook, &error)
 54         println("修改数据库是否成功: \(success)")
 55     }
 56
 57     //删除联系人
 58     @IBAction func deletePeople()
 59     {
 60         //定义错误标记
 61         var error:Unmanaged<CFError>?
 62
 63         //取得电话薄句柄
 64         var addressBook: ABAddressBookRef? = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
 65
 66         //读取通讯录
 67         let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus()
 68
 69         if sysAddressBookStatus == .Denied || sysAddressBookStatus == .NotDetermined {
 70             // Need to ask for authorization
 71             var authorizedSingal:dispatch_semaphore_t = dispatch_semaphore_create(0)
 72             var askAuthorization:ABAddressBookRequestAccessCompletionHandler = { success, error in
 73                 if success {
 74                     ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
 75                     dispatch_semaphore_signal(authorizedSingal)
 76                 }
 77             }
 78             ABAddressBookRequestAccessWithCompletion(addressBook, askAuthorization)
 79             dispatch_semaphore_wait(authorizedSingal, DISPATCH_TIME_FOREVER)
 80         }
 81
 82         var sysContacts:NSArray  =  ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
 83
 84
 85         //遍历通讯录
 86         for contact in sysContacts {
 87             var currentContact:Dictionary = [String:String]()
 88
 89             // 姓
 90 //            var firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as String? ?? ""
 91
 92
 93             //2015年5月2号修改
 94             var firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as! String? ?? ""
 95
 96
 97             println("姓:\(firstName)")
 98
 99             // 名
100 //            var lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as String? ?? ""
101
102              //2015年5月2号修改
103             var lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as! String? ?? ""
104
105
106             println("名:\(lastName)")
107
108             var success:Bool = false
109
110             if firstName == "zhang" && lastName == "wu"
111             {
112                  success = ABAddressBookRemoveRecord(addressBook, contact, nil);
113                 println("删除是否成功: \(success)")
114             }
115
116             //保存数据库
117             success = ABAddressBookSave(addressBook, &error)
118             println("修改数据库是否成功: \(success)")
119         }
120     }
121
122     //代码获取地址薄
123     @IBAction func codeToAddressButtonClick()
124     {
125         //定义错误标记
126         var error:Unmanaged<CFError>?
127
128         //取得电话薄句柄
129         var addressBook: ABAddressBookRef? = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
130
131         //发出授权信息,界面会弹出提示窗口
132         let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus()
133
134         //获取电话薄
135         if sysAddressBookStatus == .Denied || sysAddressBookStatus == .NotDetermined {
136             // Need to ask for authorization
137             var authorizedSingal:dispatch_semaphore_t = dispatch_semaphore_create(0)
138
139             var askAuthorization:ABAddressBookRequestAccessCompletionHandler = { success, error in
140                 if success {
141                     //获取的联系人信息数组
142                     var sysContacts:NSArray  = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
143
144
145                     //循环读取联系人
146                     for contact in sysContacts {
147                         var currentContact:Dictionary = [String:String]()
148
149
150                         /*
151                         部分单值属性
152                         */
153                         // 姓
154 //                        var firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as String? ?? ""
155
156                         //2015年5月2号修改
157                         var firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as! String? ?? ""
158                         println("姓:\(firstName)")
159
160
161                         // 名
162 //                        var lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as String? ?? ""
163
164                         //2015年5月2号修改
165                         var lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as! String? ?? ""
166                         println("名:\(lastName)")
167
168
169                         // 昵称
170 //                        var nikename = ABRecordCopyValue(contact, kABPersonNicknameProperty)?.takeRetainedValue() as String? ?? ""
171
172                         //2015年5月2号修改
173                         var nikename = ABRecordCopyValue(contact, kABPersonNicknameProperty)?.takeRetainedValue() as! String? ?? ""
174
175                         println("昵称:\(nikename)")
176
177
178                         // 公司(组织)
179 //                        var  organization = ABRecordCopyValue(contact, kABPersonOrganizationProperty)?.takeRetainedValue() as String? ?? ""
180
181                         //2015年5月2号修改
182                         var  organization = ABRecordCopyValue(contact, kABPersonOrganizationProperty)?.takeRetainedValue() as! String? ?? ""
183                         println("公司(组织):\(organization)")
184
185
186                         // 职位
187 //                        var jobTitle = ABRecordCopyValue(contact, kABPersonJobTitleProperty)?.takeRetainedValue() as String? ?? ""
188
189                         //2015年5月2号修改
190                         var jobTitle = ABRecordCopyValue(contact, kABPersonJobTitleProperty)?.takeRetainedValue() as! String? ?? ""
191
192                         println("职位:\(jobTitle)")
193
194
195                         // 部门
196 //                        var department = ABRecordCopyValue(contact, kABPersonDepartmentProperty)?.takeRetainedValue() as String? ?? ""
197
198                         //2015年5月2号修改
199                         var department = ABRecordCopyValue(contact, kABPersonDepartmentProperty)?.takeRetainedValue() as! String? ?? ""
200
201                         println("部门:\(department)")
202
203
204
205                         //备注
206 //                        var note = ABRecordCopyValue(contact, kABPersonNoteProperty)?.takeRetainedValue() as String? ?? ""
207
208                         //2015年5月2号修改
209                         var note = ABRecordCopyValue(contact, kABPersonNoteProperty)?.takeRetainedValue() as! String? ?? ""
210
211                         println("备注:\(note)")
212
213
214
215                         /*
216                         部分多值属性
217                         */
218                         // 电话
219                         var propertyValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonPhoneProperty)?.takeRetainedValue()
220
221                         if propertyValues != nil {
222
223                             for i in 0 ..< ABMultiValueGetCount(propertyValues)
224                             {
225                                 var label:String = ABMultiValueCopyLabelAtIndex(propertyValues, i).takeRetainedValue() as String
226
227                                 var value = ABMultiValueCopyValueAtIndex(propertyValues, i)
228                                 var phone = value.takeRetainedValue() as? String ?? ""
229
230                                 println("\(label):\(phone)");
231                             }
232                         }
233
234                         // E-mail
235                         var emailValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonEmailProperty)?.takeRetainedValue()
236
237                         if emailValues != nil {
238
239                             for i in 0 ..< ABMultiValueGetCount(emailValues)
240                             {
241                                 var label:String = ABMultiValueCopyLabelAtIndex(emailValues, i).takeRetainedValue() as String
242
243                                 var value = ABMultiValueCopyValueAtIndex(emailValues, i)
244                                 var email = value.takeRetainedValue() as? String ?? ""
245
246                                 println("\(label):\(email)");
247                             }
248                         }
249
250                         // 地址
251                         var addressValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonAddressProperty)?.takeRetainedValue()
252
253                         if addressValues != nil {
254
255                             for i in 0 ..< ABMultiValueGetCount(addressValues)
256                             {
257                                 var label:String = ABMultiValueCopyLabelAtIndex(addressValues, i).takeRetainedValue() as String
258
259
260 //                                var value = ABMultiValueCopyValueAtIndex(addressValues, i)
261 //                                var addrNSDict:NSMutableDictionary = value.takeRetainedValue() as NSMutableDictionary
262 //
263 //                                var _Country = addrNSDict.valueForKey(kABPersonAddressCountryKey) as? String ?? ""
264 //                                var _State = addrNSDict.valueForKey(kABPersonAddressStateKey) as? String ?? ""
265 //                                var _City  = addrNSDict.valueForKey(kABPersonAddressCityKey) as? String ?? ""
266 //                                var _Street = addrNSDict.valueForKey(kABPersonAddressStreetKey) as? String ?? ""
267 //                                var _Contrycode = addrNSDict.valueForKey(kABPersonAddressCountryCodeKey) as? String ?? ""
268
269
270
271                                 //2015年5月2号修改
272                                 var value = ABMultiValueCopyValueAtIndex(addressValues, i)
273                                 var addrNSDict:NSMutableDictionary = value.takeRetainedValue() as! NSMutableDictionary
274
275
276                                 var _Country = addrNSDict.valueForKey(kABPersonAddressCountryKey as String) as? String ?? ""
277                                 var _State = addrNSDict.valueForKey(kABPersonAddressStateKey as String) as? String ?? ""
278                                 var _City  = addrNSDict.valueForKey(kABPersonAddressCityKey as String) as? String ?? ""
279                                 var _Street = addrNSDict.valueForKey(kABPersonAddressStreetKey as String) as? String ?? ""
280                                 var _Contrycode = addrNSDict.valueForKey(kABPersonAddressCountryCodeKey as String) as? String ?? ""
281
282
283                                 //或
284 //                                var _Country = ""
285 //                                var _State = ""
286 //                                var _City  = ""
287 //                                var _Street = ""
288 //                                var _Contrycode = ""
289 //
290 //                                if let value:String = addrNSDict.valueForKey(kABPersonAddressCountryKey as String) as? String
291 //                                {
292 //                                    _Country = value
293 //                                }
294 //
295 //                                if let value:String = addrNSDict.valueForKey(kABPersonAddressStateKey as String) as? String
296 //                                {
297 //                                    _State = value
298 //                                }
299 //
300 //                                if let value:String = addrNSDict.valueForKey(kABPersonAddressCityKey as String) as? String
301 //                                {
302 //                                    _City = value
303 //                                }
304 //
305 //                                if let value:String = addrNSDict.valueForKey(kABPersonAddressStreetKey as String) as? String
306 //                                {
307 //                                    _Street = value
308 //                                }
309 //
310 //                                if let value:String = addrNSDict.valueForKey(kABPersonAddressCountryCodeKey as String) as? String
311 //                                {
312 //                                    _Contrycode = value
313 //                                }
314
315
316
317                                 println("\(label)==_Country:\(_Country) _State:\(_State) _City:\(_City) _Street:\(_Street) _Contrycode:\(_Contrycode)");
318                             }
319                         }
320
321
322                         // 纪念日
323                         var dateValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonDateProperty)?.takeRetainedValue()
324
325                         if dateValues != nil {
326
327                             for i in 0 ..< ABMultiValueGetCount(dateValues)
328                             {
329                                 var label:String = ABMultiValueCopyLabelAtIndex(dateValues, i).takeRetainedValue() as String
330
331                                 var value = ABMultiValueCopyValueAtIndex(dateValues, i)
332                                 var date = (value.takeRetainedValue() as? NSDate)?.description
333
334                                 println("\(label):\(date)");
335                             }
336                         }
337
338
339                         // URL
340                         var urlValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonURLProperty)?.takeRetainedValue()
341
342                         if urlValues != nil {
343
344                             for i in 0 ..< ABMultiValueGetCount(urlValues)
345                             {
346                                 var label:String = ABMultiValueCopyLabelAtIndex(urlValues, i).takeRetainedValue() as String
347
348                                 var value = ABMultiValueCopyValueAtIndex(urlValues, i)
349                                 var url = value.takeRetainedValue() as? String ?? ""
350
351                                 println("\(label):\(url)");
352                             }
353                         }
354
355
356                         // SNS
357                         var snsValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonSocialProfileProperty)?.takeRetainedValue()
358
359                         if snsValues != nil {
360
361                             for i in 0 ..< ABMultiValueGetCount(snsValues)
362                             {
363                                 var label:String = ABMultiValueCopyLabelAtIndex(snsValues, i).takeRetainedValue() as String
364
365                                 var value = ABMultiValueCopyValueAtIndex(snsValues, i)
366 //                                var snsNSDict:NSMutableDictionary = value.takeRetainedValue() as NSMutableDictionary
367 //                                var _Username = snsNSDict.valueForKey(kABPersonSocialProfileUsernameKey) as? String ?? ""
368 //                                var _URL = snsNSDict.valueForKey(kABPersonSocialProfileURLKey) as? String ?? ""
369 //                                var _Serves = snsNSDict.valueForKey(kABPersonSocialProfileServiceKey) as? String ?? ""
370
371                                 //2015年5月2后修改
372                                 var snsNSDict:NSMutableDictionary = value.takeRetainedValue() as! NSMutableDictionary
373
374                                 var _Username = snsNSDict.valueForKey(kABPersonSocialProfileUsernameKey as String) as? String ?? ""
375                                 var _URL = snsNSDict.valueForKey(kABPersonSocialProfileURLKey as String) as? String ?? ""
376                                 var _Serves = snsNSDict.valueForKey(kABPersonSocialProfileServiceKey as String) as? String ?? ""
377
378                                 println("\(label)==_Username:\(_Username) _URL:\(_URL) _Serves:\(_Serves)");
379                             }
380                         }
381
382
383                         // IM
384                         var imValues:ABMultiValueRef? = ABRecordCopyValue(contact, kABPersonInstantMessageProperty)?.takeRetainedValue()
385
386                         if imValues != nil {
387
388                             for i in 0 ..< ABMultiValueGetCount(imValues)
389                             {
390                                 var label:String = ABMultiValueCopyLabelAtIndex(imValues, i).takeRetainedValue() as String
391
392                                 var value = ABMultiValueCopyValueAtIndex(imValues, i)
393 //                                var imNSDict:NSMutableDictionary = value.takeRetainedValue() as NSMutableDictionary
394 //                                var _Serves = imNSDict.valueForKey(kABPersonInstantMessageServiceKey) as? String ?? ""
395 //                                var _Username = imNSDict.valueForKey(kABPersonInstantMessageUsernameKey) as? String ?? ""
396
397
398
399                                 //2015年5月2后修改
400                                 var imNSDict:NSMutableDictionary = value.takeRetainedValue() as! NSMutableDictionary
401
402                                 var _Serves = imNSDict.valueForKey(kABPersonInstantMessageServiceKey as String) as? String ?? ""
403                                 var _Username = imNSDict.valueForKey(kABPersonInstantMessageUsernameKey as String) as? String ?? ""
404
405                                 println("\(label)==_Serves:\(_Serves) _Username:\(_Username)");
406                             }
407                         }
408                     }
409
410                     dispatch_semaphore_signal(authorizedSingal)
411                 }
412             }
413
414             ABAddressBookRequestAccessWithCompletion(addressBook, askAuthorization)
415             dispatch_semaphore_wait(authorizedSingal, DISPATCH_TIME_FOREVER)
416         }
417     }
418
419
420     //UI打开地址薄
421     @IBAction func uiToAddressButtonClick()
422     {
423         var picker = ABPeoplePickerNavigationController()
424         picker.peoplePickerDelegate = self
425         self.presentViewController(picker, animated: true, completion: { () -> Void in
426
427         })
428     }
429
430
431     // MARK: - ABPeoplePickerNavigationControllerDelegate
432     func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!)
433     {
434         // 姓
435 //        var firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as String? ?? ""
436
437         //2015年5月2号修改
438         var firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as! String? ?? ""
439
440         println("选中人的姓:\(firstName)")
441
442
443         // 名
444 //        var lastName = ABRecordCopyValue(person, kABPersonLastNameProperty)?.takeRetainedValue() as String? ?? ""
445
446         //2015年5月2号修改
447         var lastName = ABRecordCopyValue(person, kABPersonLastNameProperty)?.takeRetainedValue() as! String? ?? ""
448
449         println("选中人的名:\(lastName)")
450     }
451
452     func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier)
453     {
454
455
456     }
457
458     func peoplePickerNavigationControllerDidCancel(peoplePicker: ABPeoplePickerNavigationController!)
459     {
460         //取消
461         peoplePicker.dismissViewControllerAnimated(true, completion: { () -> Void in
462
463         })
464     }
465
466     func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!) -> Bool
467     {
468         return true
469     }
470
471     func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) -> Bool
472     {
473
474         return true
475     }
476
477
478
479     //发短信
480     //    添加MessageUI.framework框架
481     //
482     //    为ViewController类
483     //    添加UINavigationControllerDelegate, MFMessageComposeViewControllerDelegate 接口
484     //    实现func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult)
485     @IBAction func sendSMSButtonClick()
486     {
487         //判断
488         if MFMessageComposeViewController.canSendText(){
489             let controller = MFMessageComposeViewController()
490
491             // 设置短信内容
492             controller.body = "短信内容短信内容"
493
494             // 设置收件人列表
495             controller.recipients = ["15900001111,18900001111,17011112222"]
496
497             //设置代理
498             controller.messageComposeDelegate = self
499
500             //打开界面
501             self.presentViewController(controller, animated: true, completion: nil)
502         } else {
503             let alert = UIAlertView(title: "提示信息", message: "本设备不能发短信", delegate: nil, cancelButtonTitle: "确定")
504             alert.show()
505         }
506     }
507
508     //代理
509     func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
510
511         controller.dismissViewControllerAnimated(true, completion: nil)
512
513         switch result.value{
514         case MessageComposeResultSent.value:
515             println("短信已发送")
516         case MessageComposeResultCancelled.value:
517             println("短信已取消")
518         case MessageComposeResultFailed.value:
519             println("短信发送失败")
520         default:
521             break
522         }
523     }
524
525
526     //打电话
527     @IBAction func phoneButtonClick()
528     {
529         //调用打电话功能--最简单最直接的方式:直接跳到拨号界面
530         UIApplication.sharedApplication().openURL(NSURL(string: "tel://10086")!)
531
532     }
533
534
535
536 //    该实例说明了如何使用MessageUI框架组成并在程序内部发送邮件和短信。
537 //
538 //    该应用使用MessageUI框架的MFMailComposeViewController类和MFMessageComposeViewController类,这两个类分别管理用户界面并充许用户在程序内部集成发送邮件和短信。
539 //
540 //    该实例显示两个按钮,一个为“发送邮件”,另一个为“发送短信”。
541 //
542 //    当用户单击“发送邮件”与“发送短信”时,应用分别显示集成的邮件集成界面与短信集成界面。
543 //
544 //    应用不但检查它们的集成界面是否存在,还检查设备是否已经配置为了可以发送邮件和短信。另处,它提供了反馈消息。
545
546 //    MFMailComposeViewControllerDelegate
547
548     //发邮件
549     @IBAction func sendEmailButtonClick()
550     {
551         if MFMailComposeViewController.canSendMail()
552         {
553             var picker = MFMailComposeViewController()
554             picker.mailComposeDelegate = self
555
556             //设置主题
557             picker.setSubject("这是一个主题")
558
559             //设置发件人
560             picker.setToRecipients(["[email protected]","[email protected]","[email protected]"])
561
562             //设置抄送人
563             picker.setCcRecipients(["[email protected]","[email protected]"])
564
565             //设置密送人
566             picker.setBccRecipients(["[email protected]"])
567
568             //添加图片附件
569             var path = NSBundle.mainBundle().pathForResource("SwiftClassWeiXin.png", ofType: "")
570             var myData = NSData(contentsOfFile: path!)
571             picker.addAttachmentData(myData, mimeType: "image/png", fileName: "swift.png")
572
573             //设置邮件正文内容-支持html
574             picker.setMessageBody("这是邮件正文", isHTML: false)
575
576             //打开界面
577             self.presentViewController(picker, animated: true, completion: nil)
578         }
579         else
580         {
581             let alert = UIAlertView(title: "提示信息", message: "本设备不能发邮件", delegate: nil, cancelButtonTitle: "确定")
582             alert.show()
583         }
584     }
585
586
587     //发送邮件代理方法
588     func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!)
589     {
590
591         controller.dismissViewControllerAnimated(true, completion: nil)
592
593         switch result.value{
594             case MFMailComposeResultCancelled.value:
595                 println("邮件已取消")
596             break;
597             case MFMailComposeResultSaved.value:
598                 println("邮件已保存")
599             break;
600                 case MFMailComposeResultSent.value:
601                 println("邮件已发送")
602             break;
603                 case MFMailComposeResultFailed.value:
604                 println("邮件发送失败")
605             break;
606             default:
607                 println("邮件没有发送")
608             break;
609         }
610     }
611
612
613
614
615
616
617
618     override func viewDidLoad() {
619         super.viewDidLoad()
620
621         if titleString != nil && titleString != ""{
622             titleLabel.text = titleString
623         }else{
624             titleLabel.text = "第12章 地址薄、短信、邮件";
625         }
626
627
628         // Do any additional setup after loading the view.
629     }
时间: 2024-10-25 16:37:40

ios开发——实用技术篇Swift篇&地址薄、短信、邮件的相关文章

ios开发——实用技术篇Swift篇&amp;系统声音

系统声音 1 // MARK: - 系统声音 2 /*----- 系统声音 ------*/ 3 @IBAction func systemSound() 4 { 5 //建立的SystemSoundID对象 6 var soundID: SystemSoundID = 0 7 8 //获取声音文件地址 9 var path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") 10 11 /

ios开发——实用技术篇Swift篇&amp;播放MP3

播放MP3 1 // MARK: - 播放MP3 2 /*----- mp3 ------*/ 3 //定时器- 4 func updateTime() 5 { 6 //获取音频播放器播放的进度,单位秒 7 var cuTime:Float = Float(audioPlayer.currentTime) 8 9 //更新进度条 10 jinDuSlider.value = cuTime 11 12 //获取总时间 13 var duTime:Float = Float(audioPlayer.

ios开发——实用技术篇Swift篇&amp;多点触摸与手势识别

多点触摸与手势识别 1 2 //点击事件 3 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") 4 self.view.addGestureRecognizer(atap) 5 atap.numberOfTapsRequired = 1 //单击次数 6 atap.numberOfTouchesRequired = 1 //手指个数 7 8 //拖动事件 9 var aPan = UIPanGesture

ios开发——实用技术篇Swift篇&amp;录音

录音 1 // MARK: - 录音 2 /*----- 录音 ------*/ 3 4 var recorder:AVAudioRecorder? //录音器 5 var player:AVAudioPlayer? //播放器 6 var recorderSettingsDic:[NSObject : AnyObject]? //录音器设置参数数组 7 var volumeTimer:NSTimer!//定时器线程, 刷新音量 8 var aacPath:String? //录音存储路径 9

ios开发——实用技术篇Swift篇&amp;照片选择

照片选择 1 // MARK: - 选择照片 2 /*----- 选择照片 ------*/ 3 @IBAction func addImageButtonClick() 4 { 5 let actionSheet = UIActionSheet(title: "请选择", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "从相

ios开发——实用技术篇Swift篇&amp;加速计和陀螺仪

加速计和陀螺仪 1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 8 @IBOutlet var xLabel:UILabel! 9 @IBOutlet var yLabel:UILabel! 10 @IBOutlet var zLabel:UILabel! 11 12 @IBOutlet var orient

ios开发——实用技术篇Swift篇&amp;视频

视频 1 // MARK: - 播放视频 2 /*----- 播放视频 ------*/ 3 4 5 func moviePlayerPreloadFinish(notification:NSNotification) 6 { 7 println("播放完毕") 8 } 9 10 //声明一个媒体播放器 11 var moviePlayer:MPMoviePlayerController? 12 13 @IBAction func playMV() 14 { 15 let filePa

ios开发——实用技术篇Swift篇&amp;拍照

拍照 1 // MARK: - 拍照 2 func fromPhotograph() 3 { 4 if UIImagePickerController.isSourceTypeAvailable(.Camera) 5 { 6 //创建图片控制器 7 let picker = UIImagePickerController() 8 9 //设置代理 10 picker.delegate = self 11 12 //设置来源 13 picker.sourceType = UIImagePicker

ios开发——实用技术篇OC篇&amp;iOS的主要框架

iOS的主要框架         阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core Graphics框架帮助你创建图形 Core Animation允许你创建高级的动画和虚拟效果 OpenGL ES 框架提供2D和3D绘图工具 将别的框架添加到工程里 本文是<Sunvey the Major Framworks>一文的翻译 框架是一个目录,这个目录包含了共享库,访问共享库里代码