質問編集履歴
5
画像差し替え
test
CHANGED
File without changes
|
test
CHANGED
@@ -476,6 +476,6 @@
|
|
476
476
|
|
477
477
|

|
478
478
|
|
479
|
-

|
480
480
|
|
481
481
|

|
4
CNContactPickerViewControllerのチェックを消したいです。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
連絡先
|
1
|
+
連絡先CNContactPickerViewControllerのチェックが消えません(初期化したいです)。
|
test
CHANGED
@@ -8,14 +8,18 @@
|
|
8
8
|
|
9
9
|
アラートが開き、選択した人が表示されます。
|
10
10
|
|
11
|
-
③そこから
|
11
|
+
③そこからさらに人をタップすると、その人の名前、携帯番号、メールアドレスを表示する。
|
12
|
+
|
13
|
+
④人を選んで情報を取得アラートを表示。
|
14
|
+
|
15
|
+
⑤4のアラートの「OK」を押すとViewControllerに戻る。
|
16
|
+
|
17
|
+
**⑥再度、ViewControllerの「取得」ボタンを押してiPhoneの連絡先一覧を開くと
|
18
|
+
|
19
|
+
チェックが外れていません。**
|
12
20
|
|
13
21
|
******************************************************************
|
14
22
|
|
15
|
-
③までは、なんとかできたのですが、アラートの「OK」を押して**ViewControllerに戻って再度「取得」ボタンを押して連絡先一覧を開くと
|
16
|
-
|
17
|
-
チェックが消えていません。**リフレッシュできるのでしょうか?
|
18
|
-
|
19
23
|
```ここに言語を入力
|
20
24
|
|
21
25
|
// ViewController.swift
|
@@ -248,9 +252,13 @@
|
|
248
252
|
|
249
253
|
preferredStyle:.alert)
|
250
254
|
|
251
|
-
kekkaAlert.addAction(UIAlertAction(title: "OK", style: .default))
|
255
|
+
** kekkaAlert.addAction(UIAlertAction(title: "OK", style: .default))
|
256
|
+
|
252
|
-
|
257
|
+
**
|
258
|
+
|
259
|
+
**//このOKを押したらCNContactPickerVeiwのチェックを全て外したい。
|
260
|
+
|
253
|
-
|
261
|
+
**self.present(kekkaAlert, animated: true, completion: nil)
|
254
262
|
|
255
263
|
print("target name = (self.target[i].name)")
|
256
264
|
|
3
こーどを変更しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
連絡先一覧から情報を取得しアラートで表示したいです。
|
1
|
+
連絡先一覧から情報を取得しアラートで表示したいです。PickerViewのチェックが消えません
|
test
CHANGED
@@ -12,11 +12,9 @@
|
|
12
12
|
|
13
13
|
******************************************************************
|
14
14
|
|
15
|
-
③までは、なんとかできたのですが、**携帯番号、メールアドレスの表示がおかしいです。**
|
16
|
-
|
17
|
-
また**ViewControllerに戻って再度「取得」ボタンを押して連絡先一覧を開くと
|
15
|
+
③までは、なんとかできたのですが、アラートの「OK」を押して**ViewControllerに戻って再度「取得」ボタンを押して連絡先一覧を開くと
|
18
|
-
|
16
|
+
|
19
|
-
チェックが消えていません。**
|
17
|
+
チェックが消えていません。**リフレッシュできるのでしょうか?
|
20
18
|
|
21
19
|
```ここに言語を入力
|
22
20
|
|
@@ -50,7 +48,7 @@
|
|
50
48
|
|
51
49
|
@IBOutlet weak var givenNameField: UITextField!
|
52
50
|
|
53
|
-
var target: [(name:String,email:
|
51
|
+
**var target: [(name:String,email:String,phNo:String)] = []**
|
54
52
|
|
55
53
|
var nameList:[String] = []
|
56
54
|
|
@@ -306,9 +304,9 @@
|
|
306
304
|
|
307
305
|
let names = contact.givenName + " " + contact.familyName
|
308
306
|
|
309
|
-
let emails = contact.emailAddresses
|
307
|
+
let emails = (contact.emailAddresses[0].value as! String)
|
310
|
-
|
308
|
+
|
311
|
-
let phoneNo = contact.phoneNumbers
|
309
|
+
let phoneNo = (contact.phoneNumbers[0].value as! CNPhoneNumber).value(forKey: "digits") as! String
|
312
310
|
|
313
311
|
|
314
312
|
|
2
コードを変更しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
連絡先一覧
|
1
|
+
連絡先一覧から情報を取得しアラートで表示したいです。
|
test
CHANGED
@@ -12,22 +12,32 @@
|
|
12
12
|
|
13
13
|
******************************************************************
|
14
14
|
|
15
|
-
|
15
|
+
③までは、なんとかできたのですが、**携帯番号、メールアドレスの表示がおかしいです。**
|
16
16
|
|
17
17
|
また**ViewControllerに戻って再度「取得」ボタンを押して連絡先一覧を開くと
|
18
18
|
|
19
19
|
チェックが消えていません。**
|
20
20
|
|
21
|
-
[CNLabeledValue<NSString>]のメールアドレスをStringに変換することはできないのでしょうか?
|
22
|
-
|
23
21
|
```ここに言語を入力
|
24
22
|
|
23
|
+
// ViewController.swift
|
24
|
+
|
25
|
+
// ToAdressBook
|
26
|
+
|
27
|
+
// Created by admin on 2017/11/13.
|
28
|
+
|
29
|
+
// Copyright © 2017年 css. All rights reserved.
|
30
|
+
|
31
|
+
|
32
|
+
|
25
33
|
import UIKit
|
26
34
|
|
27
35
|
import Contacts
|
28
36
|
|
29
37
|
import ContactsUI
|
30
38
|
|
39
|
+
|
40
|
+
|
31
41
|
class ViewController: UIViewController, CNContactPickerDelegate, CNContactViewControllerDelegate {
|
32
42
|
|
33
43
|
|
@@ -40,13 +50,153 @@
|
|
40
50
|
|
41
51
|
@IBOutlet weak var givenNameField: UITextField!
|
42
52
|
|
43
|
-
var target: [(name:String,email:[CNLabeledValue<NSString>],phNo:CNLabeledValue<CNPhoneNumber>)] = []
|
53
|
+
var target: [(name:String,email:[CNLabeledValue<NSString>],phNo:[CNLabeledValue<CNPhoneNumber>])] = []
|
44
54
|
|
45
55
|
var nameList:[String] = []
|
46
56
|
|
47
57
|
let cnPicker = CNContactPickerViewController()
|
48
58
|
|
49
|
-
|
59
|
+
//未入力時アラート
|
60
|
+
|
61
|
+
func minyuryokuAlert() {
|
62
|
+
|
63
|
+
let alert = UIAlertController(
|
64
|
+
|
65
|
+
title: "未入力の欄があります",
|
66
|
+
|
67
|
+
message: "",
|
68
|
+
|
69
|
+
preferredStyle: .alert)
|
70
|
+
|
71
|
+
alert.addAction(UIAlertAction(title:"OK", style: .default))
|
72
|
+
|
73
|
+
self.present(alert, animated: true, completion: nil)
|
74
|
+
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
//「登録」ボタン押下
|
80
|
+
|
81
|
+
@IBAction func registerBTPush(_ sender: Any) {
|
82
|
+
|
83
|
+
//連絡先に追加する可変オブジェクト作成
|
84
|
+
|
85
|
+
let newcontact = CNMutableContact()
|
86
|
+
|
87
|
+
//newcontact.imageData = NSData() as Data //NSDataオブジェクトとしてのプロフィール画像
|
88
|
+
|
89
|
+
//キーボードを下げる
|
90
|
+
|
91
|
+
view.endEditing(true)
|
92
|
+
|
93
|
+
if nameField.text == "" {
|
94
|
+
|
95
|
+
self.minyuryokuAlert()
|
96
|
+
|
97
|
+
}
|
98
|
+
|
99
|
+
if givenNameField.text == "" {
|
100
|
+
|
101
|
+
self.minyuryokuAlert()
|
102
|
+
|
103
|
+
}
|
104
|
+
|
105
|
+
if phoneNumberField.text == "" {
|
106
|
+
|
107
|
+
self.minyuryokuAlert()
|
108
|
+
|
109
|
+
}
|
110
|
+
|
111
|
+
if emailAddressField.text == "" {
|
112
|
+
|
113
|
+
self.minyuryokuAlert()
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
//入力欄が空欄だったらエラーを表示。全て入力されていたら保存
|
118
|
+
|
119
|
+
if nameField.text != "" && givenNameField.text != "" && phoneNumberField.text != "" && emailAddressField.text != "" {
|
120
|
+
|
121
|
+
//名前
|
122
|
+
|
123
|
+
let myname = nameField.text!
|
124
|
+
|
125
|
+
newcontact.givenName = myname
|
126
|
+
|
127
|
+
//苗字
|
128
|
+
|
129
|
+
let myFamilyName = givenNameField.text!
|
130
|
+
|
131
|
+
newcontact.familyName = myFamilyName
|
132
|
+
|
133
|
+
//メアド
|
134
|
+
|
135
|
+
let myemail = emailAddressField.text! as NSString
|
136
|
+
|
137
|
+
let myEmail = CNLabeledValue(label:CNLabelHome, value:NSString(string: myemail))
|
138
|
+
|
139
|
+
newcontact.emailAddresses = [myEmail]
|
140
|
+
|
141
|
+
//番号
|
142
|
+
|
143
|
+
let myphoneNo = phoneNumberField.text!
|
144
|
+
|
145
|
+
newcontact.phoneNumbers = [CNLabeledValue(
|
146
|
+
|
147
|
+
label:CNLabelPhoneNumberiPhone,
|
148
|
+
|
149
|
+
value:CNPhoneNumber(stringValue: myphoneNo))]
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
print("お名前:(newcontact.givenName)")
|
154
|
+
|
155
|
+
print("苗字:(newcontact.familyName)")
|
156
|
+
|
157
|
+
print("メアド:(newcontact.emailAddresses)")
|
158
|
+
|
159
|
+
print("番号:(newcontact.phoneNumbers)")
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
//新しく作成した連絡先を保存
|
164
|
+
|
165
|
+
let saveRequest = CNSaveRequest()
|
166
|
+
|
167
|
+
saveRequest.add(newcontact, toContainerWithIdentifier: nil)
|
168
|
+
|
169
|
+
do{
|
170
|
+
|
171
|
+
//try store.execute(saveRequest)
|
172
|
+
|
173
|
+
try CNContactStore().execute(saveRequest)
|
174
|
+
|
175
|
+
print("保存したよ")
|
176
|
+
|
177
|
+
} catch {
|
178
|
+
|
179
|
+
print("保存失敗")
|
180
|
+
|
181
|
+
print(error)
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
} else {
|
186
|
+
|
187
|
+
self.minyuryokuAlert()
|
188
|
+
|
189
|
+
}
|
190
|
+
|
191
|
+
//初回時に連絡先へのアクセスを許可するかのメッセージを表示する
|
192
|
+
|
193
|
+
let picker = CNContactPickerViewController()
|
194
|
+
|
195
|
+
picker.delegate = self
|
196
|
+
|
197
|
+
self.present(picker, animated: true, completion: nil)
|
198
|
+
|
199
|
+
}
|
50
200
|
|
51
201
|
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
|
52
202
|
|
@@ -76,7 +226,7 @@
|
|
76
226
|
|
77
227
|
preferredStyle: .alert)
|
78
228
|
|
79
|
-
//アラートにアクション追加
|
229
|
+
//アラートにアクション追加(アクション名は選択した人達)
|
80
230
|
|
81
231
|
for i in 0..<mycount {
|
82
232
|
|
@@ -90,17 +240,25 @@
|
|
90
240
|
|
91
241
|
handler: {(action) -> Void in
|
92
242
|
|
93
|
-
print("(self.nameList[i])")
|
94
|
-
|
95
|
-
//各人の情報をタプルから取
|
243
|
+
//各アクション(各人の情報をタプル配列から取りアラートで表示)
|
244
|
+
|
96
|
-
|
245
|
+
let kekkaAlert = UIAlertController(
|
246
|
+
|
97
|
-
|
247
|
+
title: self.target[i].name,
|
248
|
+
|
98
|
-
|
249
|
+
message: "(self.target[i].email)" + "\n" + "(self.target[i].phNo)",
|
250
|
+
|
99
|
-
|
251
|
+
preferredStyle:.alert)
|
252
|
+
|
100
|
-
|
253
|
+
kekkaAlert.addAction(UIAlertAction(title: "OK", style: .default))
|
254
|
+
|
101
|
-
|
255
|
+
self.present(kekkaAlert, animated: true, completion: nil)
|
256
|
+
|
102
|
-
|
257
|
+
print("target name = (self.target[i].name)")
|
258
|
+
|
103
|
-
|
259
|
+
print("target email = (self.target[i].email)")
|
260
|
+
|
261
|
+
print("target phoneNumber = (self.target[i].phNo)")
|
104
262
|
|
105
263
|
})
|
106
264
|
|
@@ -142,31 +300,31 @@
|
|
142
300
|
|
143
301
|
//「Done」ボタン押下で選択
|
144
302
|
|
145
|
-
|
303
|
+
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]){
|
146
|
-
|
147
|
-
//ここで選んだ複数人の情報をタプルで収納したいです。現在エラーになってしまう。
|
148
304
|
|
149
305
|
contacts.forEach { contact in
|
150
306
|
|
151
|
-
|
307
|
+
let names = contact.givenName + " " + contact.familyName
|
152
|
-
|
308
|
+
|
153
|
-
|
309
|
+
let emails = contact.emailAddresses
|
154
|
-
|
310
|
+
|
155
|
-
|
311
|
+
let phoneNo = contact.phoneNumbers
|
156
|
-
|
157
|
-
|
158
|
-
|
312
|
+
|
313
|
+
|
314
|
+
|
159
|
-
|
315
|
+
print("name is = (names)")
|
160
|
-
|
316
|
+
|
161
|
-
|
317
|
+
print("email is = (emails)")
|
162
|
-
|
318
|
+
|
163
|
-
|
319
|
+
print("phoneNo is = (phoneNo)")
|
164
|
-
|
320
|
+
|
165
|
-
|
321
|
+
nameList.append(names)
|
166
|
-
|
322
|
+
|
167
|
-
|
323
|
+
//タプルの配列"target"に入れる
|
168
|
-
|
324
|
+
|
169
|
-
|
325
|
+
target.append((name:names,email:emails,phNo:phoneNo))
|
326
|
+
|
327
|
+
print("(target)")
|
170
328
|
|
171
329
|
}
|
172
330
|
|
@@ -176,65 +334,73 @@
|
|
176
334
|
|
177
335
|
displayNameList(mycount:count)
|
178
336
|
|
337
|
+
}
|
338
|
+
|
339
|
+
//「一覧」ボタンを押下。連絡先を取得
|
340
|
+
|
341
|
+
@IBAction func getMyContact(_ sender: Any) {
|
342
|
+
|
343
|
+
nameList = []
|
344
|
+
|
345
|
+
//連絡先を選択するためにCNContactPickerViewControllerを表示する
|
346
|
+
|
347
|
+
//これを実行すると初回時に「アプリが連絡先へのアクセスを求めています」というダイアログが表示され、
|
348
|
+
|
349
|
+
//連絡先へのアクセス許可が求められる。許可するとiPhoneに登録されている連絡先リストが表示される。
|
350
|
+
|
351
|
+
//let cnPicker = CNContactPickerViewController()
|
352
|
+
|
353
|
+
cnPicker.delegate = self
|
354
|
+
|
355
|
+
self.present(cnPicker, animated: true, completion: nil)
|
356
|
+
|
179
357
|
|
180
358
|
|
181
359
|
}
|
182
360
|
|
183
|
-
|
361
|
+
|
184
|
-
|
185
|
-
|
362
|
+
|
186
|
-
|
187
|
-
// let names = contact.givenName + " " + contact.familyName
|
188
|
-
|
189
|
-
// let emails = CNContactProperty.value?.description
|
190
|
-
|
191
|
-
// let phoneNo = contact.phoneNumbers
|
192
|
-
|
193
|
-
//
|
194
|
-
|
195
|
-
// print("name is = (names)")
|
196
|
-
|
197
|
-
// print("email is = (emails)")
|
198
|
-
|
199
|
-
// print("phoneNo is = (phoneNo)")
|
200
|
-
|
201
|
-
// nameList.append(names)
|
202
|
-
|
203
|
-
// //タプルの配列"target"に入れる
|
204
|
-
|
205
|
-
// target.append((name:names,email:emails,phNo:phoneNo))
|
206
|
-
|
207
|
-
|
363
|
+
//名前入力欄を消去
|
208
|
-
|
209
|
-
|
364
|
+
|
210
|
-
|
211
|
-
// print("nameList = (nameList)")
|
212
|
-
|
213
|
-
|
365
|
+
@IBAction func NameFieldDelete(_ sender: Any) {
|
214
|
-
|
215
|
-
|
366
|
+
|
216
|
-
|
217
|
-
|
367
|
+
nameField.text = ""
|
368
|
+
|
218
|
-
|
369
|
+
}
|
370
|
+
|
371
|
+
|
372
|
+
|
219
|
-
@IBAction func ge
|
373
|
+
@IBAction func givenNameDelete(_ sender: Any) {
|
220
|
-
|
221
|
-
|
374
|
+
|
222
|
-
|
223
|
-
//連絡先を選択するためにCNContactPickerViewControllerを表示する
|
224
|
-
|
225
|
-
//これを実行すると初回時に「アプリが連絡先へのアクセスを求めています」というダイアログが表示され、
|
226
|
-
|
227
|
-
//連絡先へのアクセス許可が求められる。許可するとiPhoneに登録されている連絡先リストが表示される。
|
228
|
-
|
229
|
-
//let cnPicker = CNContactPickerViewController()
|
230
|
-
|
231
|
-
|
375
|
+
givenNameField.text = ""
|
376
|
+
|
232
|
-
|
377
|
+
}
|
378
|
+
|
379
|
+
//電話番号入力欄を消去
|
380
|
+
|
233
|
-
|
381
|
+
@IBAction func phoneNumFieldDelete(_ sender: Any) {
|
234
382
|
|
235
383
|
|
236
384
|
|
385
|
+
phoneNumberField.text = ""
|
386
|
+
|
237
|
-
}
|
387
|
+
}
|
388
|
+
|
389
|
+
func addAddressSave(){
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
}
|
394
|
+
|
395
|
+
//emailアドレス入力欄を消去
|
396
|
+
|
397
|
+
@IBAction func emailFieldDelete(_ sender: Any) {
|
398
|
+
|
399
|
+
emailAddressField.text = ""
|
400
|
+
|
401
|
+
}
|
402
|
+
|
403
|
+
|
238
404
|
|
239
405
|
override func viewDidLoad() {
|
240
406
|
|
@@ -244,6 +410,8 @@
|
|
244
410
|
|
245
411
|
}
|
246
412
|
|
413
|
+
|
414
|
+
|
247
415
|
override func didReceiveMemoryWarning() {
|
248
416
|
|
249
417
|
super.didReceiveMemoryWarning()
|
@@ -252,7 +420,41 @@
|
|
252
420
|
|
253
421
|
}
|
254
422
|
|
423
|
+
////キーボードに閉じるボタンをつける
|
424
|
+
|
425
|
+
func makeKeyboard(){
|
426
|
+
|
427
|
+
//仮のサイズでツールバー作成
|
428
|
+
|
429
|
+
let kbToolBar = UIToolbar(frame: CGRect(x: 0,y: 0, width: 320, height: 40))
|
430
|
+
|
431
|
+
kbToolBar.barStyle = UIBarStyle.default //スタイル設定
|
432
|
+
|
433
|
+
kbToolBar.sizeToFit() //画面に合わせてサイズ調整
|
434
|
+
|
435
|
+
//スペーサー
|
436
|
+
|
437
|
+
let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: self, action: nil)
|
438
|
+
|
439
|
+
//閉じるボタン
|
440
|
+
|
441
|
+
let commitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(ViewController.commitButtonTapped))
|
442
|
+
|
443
|
+
kbToolBar.items = [spacer, commitButton]
|
444
|
+
|
445
|
+
nameField.inputAccessoryView = kbToolBar
|
446
|
+
|
447
|
+
phoneNumberField.inputAccessoryView = kbToolBar
|
448
|
+
|
449
|
+
emailAddressField.inputAccessoryView = kbToolBar
|
450
|
+
|
451
|
+
givenNameField.inputAccessoryView = kbToolBar
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
}
|
456
|
+
|
255
|
-
@objc func commitButtonTapped(){
|
457
|
+
@objc func commitButtonTapped(){
|
256
458
|
|
257
459
|
self.view.endEditing(true)
|
258
460
|
|
@@ -262,12 +464,12 @@
|
|
262
464
|
|
263
465
|
}
|
264
466
|
|
265
|
-
|
266
|
-
|
267
467
|
```
|
268
468
|
|
269
|
-
|
270
|
-
|
271
|
-

|
272
|
-
|
470
|
+
|
273
|
-

|
472
|
+
|
473
|
+

|
474
|
+
|
475
|
+

|
1
コードを書き換えました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,37 +18,41 @@
|
|
18
18
|
|
19
19
|
チェックが消えていません。**
|
20
20
|
|
21
|
+
[CNLabeledValue<NSString>]のメールアドレスをStringに変換することはできないのでしょうか?
|
22
|
+
|
21
23
|
```ここに言語を入力
|
22
24
|
|
23
|
-
//
|
24
|
-
|
25
|
-
// ViewController.swift
|
26
|
-
|
27
|
-
// ToAdressBook
|
28
|
-
|
29
|
-
//
|
30
|
-
|
31
|
-
// Created by admin on 2017/11/13.
|
32
|
-
|
33
|
-
// Copyright © 2017年 css. All rights reserved.
|
34
|
-
|
35
|
-
//
|
36
|
-
|
37
|
-
|
38
|
-
|
39
25
|
import UIKit
|
40
26
|
|
41
27
|
import Contacts
|
42
28
|
|
43
29
|
import ContactsUI
|
44
30
|
|
45
|
-
|
46
|
-
|
47
31
|
class ViewController: UIViewController, CNContactPickerDelegate, CNContactViewControllerDelegate {
|
48
32
|
|
33
|
+
|
34
|
+
|
35
|
+
@IBOutlet weak var nameField: UITextField!
|
36
|
+
|
37
|
+
@IBOutlet weak var phoneNumberField: UITextField!
|
38
|
+
|
39
|
+
@IBOutlet weak var emailAddressField: UITextField!
|
40
|
+
|
41
|
+
@IBOutlet weak var givenNameField: UITextField!
|
42
|
+
|
43
|
+
var target: [(name:String,email:[CNLabeledValue<NSString>],phNo:CNLabeledValue<CNPhoneNumber>)] = []
|
44
|
+
|
49
|
-
|
45
|
+
var nameList:[String] = []
|
50
|
-
|
46
|
+
|
51
|
-
let cnPicker = CNContactPickerViewController()
|
47
|
+
let cnPicker = CNContactPickerViewController()
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
|
52
|
+
|
53
|
+
print("ContactPickerキャンセルしたよ")
|
54
|
+
|
55
|
+
}
|
52
56
|
|
53
57
|
|
54
58
|
|
@@ -58,8 +62,6 @@
|
|
58
62
|
|
59
63
|
print("飛んだよ")
|
60
64
|
|
61
|
-
//ここが不安
|
62
|
-
|
63
65
|
self.cnPicker.dismiss(animated: false) {
|
64
66
|
|
65
67
|
print("閉じたよ?")
|
@@ -74,7 +76,7 @@
|
|
74
76
|
|
75
77
|
preferredStyle: .alert)
|
76
78
|
|
77
|
-
//アラートにアクション追加
|
79
|
+
//アラートにアクション追加
|
78
80
|
|
79
81
|
for i in 0..<mycount {
|
80
82
|
|
@@ -90,9 +92,15 @@
|
|
90
92
|
|
91
93
|
print("(self.nameList[i])")
|
92
94
|
|
93
|
-
|
94
|
-
|
95
|
-
|
95
|
+
//各人の情報をタプルから取得
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
96
104
|
|
97
105
|
})
|
98
106
|
|
@@ -132,18 +140,34 @@
|
|
132
140
|
|
133
141
|
}
|
134
142
|
|
135
|
-
//「Done」ボタン押下で選択
|
143
|
+
//「Done」ボタン押下で選択
|
136
|
-
|
144
|
+
|
137
|
-
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts:
|
145
|
+
private func contactPicker(_ picker: CNContactPickerViewController, didSelectContactProperty contacts: CNContactProperty){
|
146
|
+
|
147
|
+
//ここで選んだ複数人の情報をタプルで収納したいです。現在エラーになってしまう。
|
138
148
|
|
139
149
|
contacts.forEach { contact in
|
140
150
|
|
141
|
-
let names = contact.
|
151
|
+
let names = contact.givenName + " " + contact.familyName
|
152
|
+
|
153
|
+
let emails = CNContactProperty.value?.description
|
154
|
+
|
155
|
+
let phoneNo = contact.phoneNumbers
|
156
|
+
|
157
|
+
|
142
158
|
|
143
159
|
print("name is = (names)")
|
144
160
|
|
161
|
+
print("email is = (emails)")
|
162
|
+
|
163
|
+
print("phoneNo is = (phoneNo)")
|
164
|
+
|
145
165
|
nameList.append(names)
|
146
166
|
|
167
|
+
//タプルの配列"target"に入れる
|
168
|
+
|
169
|
+
target.append((name:names,email:emails,phNo:phoneNo))
|
170
|
+
|
147
171
|
}
|
148
172
|
|
149
173
|
let count = nameList.count
|
@@ -152,9 +176,43 @@
|
|
152
176
|
|
153
177
|
displayNameList(mycount:count)
|
154
178
|
|
155
|
-
|
156
|
-
|
179
|
+
|
180
|
+
|
157
|
-
}
|
181
|
+
}
|
182
|
+
|
183
|
+
//func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]){
|
184
|
+
|
185
|
+
// contacts.forEach { contact in
|
186
|
+
|
187
|
+
// let names = contact.givenName + " " + contact.familyName
|
188
|
+
|
189
|
+
// let emails = CNContactProperty.value?.description
|
190
|
+
|
191
|
+
// let phoneNo = contact.phoneNumbers
|
192
|
+
|
193
|
+
//
|
194
|
+
|
195
|
+
// print("name is = (names)")
|
196
|
+
|
197
|
+
// print("email is = (emails)")
|
198
|
+
|
199
|
+
// print("phoneNo is = (phoneNo)")
|
200
|
+
|
201
|
+
// nameList.append(names)
|
202
|
+
|
203
|
+
// //タプルの配列"target"に入れる
|
204
|
+
|
205
|
+
// target.append((name:names,email:emails,phNo:phoneNo))
|
206
|
+
|
207
|
+
// }
|
208
|
+
|
209
|
+
// let count = nameList.count
|
210
|
+
|
211
|
+
// print("nameList = (nameList)")
|
212
|
+
|
213
|
+
// displayNameList(mycount:count)
|
214
|
+
|
215
|
+
//}
|
158
216
|
|
159
217
|
//「一覧」ボタンを押下。連絡先を取得
|
160
218
|
|
@@ -176,11 +234,7 @@
|
|
176
234
|
|
177
235
|
|
178
236
|
|
179
|
-
}
|
237
|
+
}
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
238
|
|
185
239
|
override func viewDidLoad() {
|
186
240
|
|
@@ -190,8 +244,6 @@
|
|
190
244
|
|
191
245
|
}
|
192
246
|
|
193
|
-
|
194
|
-
|
195
247
|
override func didReceiveMemoryWarning() {
|
196
248
|
|
197
249
|
super.didReceiveMemoryWarning()
|
@@ -200,9 +252,7 @@
|
|
200
252
|
|
201
253
|
}
|
202
254
|
|
203
|
-
|
204
|
-
|
205
|
-
|
255
|
+
@objc func commitButtonTapped(){
|
206
256
|
|
207
257
|
self.view.endEditing(true)
|
208
258
|
|
@@ -214,8 +264,6 @@
|
|
214
264
|
|
215
265
|
|
216
266
|
|
217
|
-
|
218
|
-
|
219
267
|
```
|
220
268
|
|
221
269
|
|