質問編集履歴

1

2019/05/21 05:39

投稿

harusame18
harusame18

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,559 +1 @@
1
- ### 前提・実現したいこと
2
-
3
- あるサイトを参考にしながらTodoアプリを作成しているのですが、
4
-
5
- 契約者名からメモの所まで全て入力しないと追加ができません。
6
-
7
- どのようにすれば空欄/未選択でも保存ができますか?
8
-
9
- た、デートピッカーが英語表記になってしすが、日本語に変更できすか?
1
+ りひまらまらはまさはまらまはまひまはまばまらばはらまらはまはま67673
10
-
11
- ### 発生している問題・エラーメッセージ
12
-
13
-
14
-
15
- ```
16
-
17
- ・入力フォームが全て入力必須になっており、入力を任意にしたい。
18
-
19
- ・デートピッカーを日本語にしたい。
20
-
21
- ```
22
-
23
-
24
-
25
- ### 該当のソースコード
26
-
27
-
28
-
29
- ```ここに言語名を入力
30
-
31
- import UIKit
32
-
33
-
34
-
35
- class CDetailViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {
36
-
37
- @IBOutlet weak var saveUB: UIButton!
38
-
39
- @IBOutlet weak var deleteUB: UIButton!
40
-
41
- @IBOutlet weak var noteUTV: UITextView!
42
-
43
- @IBOutlet weak var nameUT: UITextField!
44
-
45
- @IBOutlet weak var statuUT: UITextField!
46
-
47
- @IBOutlet weak var accuracyUT: UITextField!
48
-
49
- @IBOutlet weak var companyUT: UITextField!
50
-
51
- @IBOutlet weak var deadlineUT: UITextField!
52
-
53
- @IBOutlet weak var timelineUT: UITextField!
54
-
55
-
56
-
57
- var selTextField = UITextField()
58
-
59
-
60
-
61
- var picker: CustomPickerView?
62
-
63
- var date_picker: UIDatePicker?
64
-
65
- var pickerAccessory: UIToolbar?
66
-
67
-
68
-
69
- override func viewDidLoad() {
70
-
71
- super.viewDidLoad()
72
-
73
-
74
-
75
-
76
-
77
- if gFlgAdd {
78
-
79
- self.title = "案件を追加"
80
-
81
- } else {
82
-
83
- self.title = "案件を編集"
84
-
85
- self.navigationItem.rightBarButtonItem = nil
86
-
87
- }
88
-
89
-
90
-
91
- picker = CustomPickerView()
92
-
93
- picker?.autoresizingMask = [.flexibleHeight, .flexibleWidth]
94
-
95
- picker?.backgroundColor = UIColor.white
96
-
97
-
98
-
99
- date_picker = UIDatePicker()
100
-
101
- date_picker?.autoresizingMask = [.flexibleHeight, .flexibleWidth]
102
-
103
- date_picker?.backgroundColor = UIColor.white
104
-
105
- date_picker?.datePickerMode = .date
106
-
107
-
108
-
109
- initUIView()
110
-
111
- }
112
-
113
-
114
-
115
- func initUIView () {
116
-
117
- saveUB.setPopItemViewStyle(title: .large)
118
-
119
- deleteUB.setPopItemViewStyle(title: .large)
120
-
121
- noteUTV.setPopItemViewStyle(title: .medium)
122
-
123
- if gFlgAdd {
124
-
125
- saveUB.isHidden = true
126
-
127
- deleteUB.isHidden = true
128
-
129
- } else {
130
-
131
- nameUT.text = gSel_CData.name
132
-
133
- statuUT.text = gSel_CData.statu
134
-
135
- companyUT.text = gSel_CData.company
136
-
137
- accuracyUT.text = gSel_CData.accuray
138
-
139
- deadlineUT.text = gSel_CData.deadline
140
-
141
- timelineUT.text = gSel_CData.timeline
142
-
143
- noteUTV.text = gSel_CData.note
144
-
145
- }
146
-
147
-
148
-
149
- statuUT.inputView = picker
150
-
151
- accuracyUT.inputView = picker
152
-
153
- companyUT.inputView = picker
154
-
155
- deadlineUT.inputView = date_picker
156
-
157
- timelineUT.inputView = date_picker
158
-
159
-
160
-
161
- pickerAccessory = UIToolbar()
162
-
163
- pickerAccessory?.autoresizingMask = .flexibleHeight
164
-
165
-
166
-
167
- //this customization is optional
168
-
169
- pickerAccessory?.barStyle = .default
170
-
171
- pickerAccessory?.barTintColor = UIColor.lightGray
172
-
173
- pickerAccessory?.backgroundColor = UIColor.lightGray
174
-
175
- pickerAccessory?.isTranslucent = false
176
-
177
- var frame = pickerAccessory?.frame
178
-
179
- frame?.size.height = 44.0
180
-
181
- pickerAccessory?.frame = frame!
182
-
183
-
184
-
185
- let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(CDetailViewController.cancelBtnClicked(_:)))
186
-
187
- cancelButton.tintColor = UIColor.white
188
-
189
- let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) //a flexible space between the two buttons
190
-
191
- let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(CDetailViewController.doneBtnClicked(_:)))
192
-
193
- doneButton.tintColor = UIColor.white
194
-
195
-
196
-
197
- //Add the items to the toolbar
198
-
199
- pickerAccessory?.items = [cancelButton, flexSpace, doneButton]
200
-
201
-
202
-
203
- statuUT.inputAccessoryView = pickerAccessory
204
-
205
- accuracyUT.inputAccessoryView = pickerAccessory
206
-
207
- companyUT.inputAccessoryView = pickerAccessory
208
-
209
- deadlineUT.inputAccessoryView = pickerAccessory
210
-
211
- timelineUT.inputAccessoryView = pickerAccessory
212
-
213
- }
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
- func textFieldShouldReturn(_ textField: UITextField) -> Bool {
224
-
225
- textField.resignFirstResponder()
226
-
227
- return true
228
-
229
- }
230
-
231
-
232
-
233
-
234
-
235
- @objc func cancelBtnClicked(_ button: UIBarButtonItem?) {
236
-
237
- selTextField.resignFirstResponder()
238
-
239
- }
240
-
241
-
242
-
243
-
244
-
245
- @objc func doneBtnClicked(_ button: UIBarButtonItem?) {
246
-
247
- selTextField.resignFirstResponder()
248
-
249
- if (picker?.mDatas.count)! > 0 {
250
-
251
- selTextField.text = picker?.selectedValue
252
-
253
- } else {
254
-
255
- let dateFormatter = DateFormatter()
256
-
257
- dateFormatter.dateFormat = "yyyy年 MM月 dd日"
258
-
259
- let selectedDate = dateFormatter.string(from: date_picker!.date)
260
-
261
-
262
-
263
- selTextField.text = selectedDate
264
-
265
- }
266
-
267
- }
268
-
269
-
270
-
271
- func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
272
-
273
- if(text == "\n") {
274
-
275
- textView.resignFirstResponder()
276
-
277
- return false
278
-
279
- }
280
-
281
- return true
282
-
283
- }
284
-
285
-
286
-
287
- func textFieldDidBeginEditing(_ textField: UITextField) {
288
-
289
- selTextField = textField
290
-
291
- if (textField.isEqual(statuUT)) {
292
-
293
- picker?.mDatas = ["受注", "Xデート", "見積作成中", "提案中", "成約(今月中)", "成約(来月以降)", "敗戦"]
294
-
295
- } else if (textField.isEqual(accuracyUT)) {
296
-
297
- picker?.mDatas = ["難しい", "50%", "前向きに検討", "確約"]
298
-
299
- } else if (textField.isEqual(companyUT)) {
300
-
301
- picker?.mDatas = ["SJNK", "TN", "MS", "AD", "JA", "通販", "共済", "AIG", "富士火災", "共栄", "その他"]
302
-
303
- } else {
304
-
305
- picker?.mDatas.removeAll()
306
-
307
- }
308
-
309
- }
310
-
311
-
312
-
313
- @IBAction func onClickItemAdd(_ sender: Any) {
314
-
315
- let str_name = nameUT.text;
316
-
317
- if str_name?.count == 0 {
318
-
319
- self.showToast(message: "全て入力して下さい")
320
-
321
- return
322
-
323
- }
324
-
325
- let str_statu = statuUT.text;
326
-
327
- if str_statu?.count == 0 {
328
-
329
- self.showToast(message: "全て入力して下さい")
330
-
331
- return
332
-
333
- }
334
-
335
- let str_accuracy = accuracyUT.text;
336
-
337
- if str_accuracy?.count == 0 {
338
-
339
- self.showToast(message: "全て入力して下さい")
340
-
341
- return
342
-
343
- }
344
-
345
- let str_company = companyUT.text;
346
-
347
- if str_company?.count == 0 {
348
-
349
- self.showToast(message: "全て入力して下さい")
350
-
351
- return
352
-
353
- }
354
-
355
- let str_deadline = deadlineUT.text;
356
-
357
- if str_deadline?.count == 0 {
358
-
359
- self.showToast(message: "全て入力して下さい")
360
-
361
- return
362
-
363
- }
364
-
365
- let str_timeline = timelineUT.text;
366
-
367
- if str_timeline?.count == 0 {
368
-
369
- self.showToast(message: "全て入力して下さい")
370
-
371
- return
372
-
373
- }
374
-
375
- let str_note = noteUTV.text;
376
-
377
- if str_note?.count == 0 {
378
-
379
- self.showToast(message: "全て入力して下さい")
380
-
381
- return
382
-
383
- }
384
-
385
-
386
-
387
- let info = CGroup()
388
-
389
- info.id = gCCount
390
-
391
- info.name = str_name!
392
-
393
- info.statu = str_statu!
394
-
395
- info.accuray = str_accuracy!
396
-
397
- info.company = str_company!
398
-
399
- info.deadline = str_deadline!
400
-
401
- info.timeline = str_timeline!
402
-
403
- info.note = str_note!
404
-
405
-
406
-
407
- Common.add_CData(a: gSel_AData, b: gSel_BData, c: info)
408
-
409
-
410
-
411
- self.navigationController?.popViewController(animated: true)
412
-
413
- }
414
-
415
-
416
-
417
- @IBAction func onClickBtnEdit(_ sender: Any) {
418
-
419
- let str_name = nameUT.text;
420
-
421
- if str_name?.count == 0 {
422
-
423
- self.showToast(message: "全て入力して下さい")
424
-
425
- return
426
-
427
- }
428
-
429
- let str_statu = statuUT.text;
430
-
431
- if str_statu?.count == 0 {
432
-
433
- self.showToast(message: "全て入力して下さい")
434
-
435
- return
436
-
437
- }
438
-
439
- let str_accuracy = accuracyUT.text;
440
-
441
- if str_accuracy?.count == 0 {
442
-
443
- self.showToast(message: "全て入力して下さい")
444
-
445
- return
446
-
447
- }
448
-
449
- let str_company = companyUT.text;
450
-
451
- if str_company?.count == 0 {
452
-
453
- self.showToast(message: "全て入力して下さい")
454
-
455
- return
456
-
457
- }
458
-
459
- let str_deadline = deadlineUT.text;
460
-
461
- if str_deadline?.count == 0 {
462
-
463
- self.showToast(message: "全て入力して下さい")
464
-
465
- return
466
-
467
- }
468
-
469
- let str_timeline = timelineUT.text;
470
-
471
- if str_timeline?.count == 0 {
472
-
473
- self.showToast(message: "全て入力して下さい")
474
-
475
- return
476
-
477
- }
478
-
479
- let str_note = noteUTV.text;
480
-
481
- if str_note?.count == 0 {
482
-
483
- self.showToast(message: "全て入力して下さい")
484
-
485
- return
486
-
487
- }
488
-
489
-
490
-
491
- let info = CGroup()
492
-
493
- info.id = gSel_CData.id
494
-
495
- info.name = str_name!
496
-
497
- info.statu = str_statu!
498
-
499
- info.accuray = str_accuracy!
500
-
501
- info.company = str_company!
502
-
503
- info.deadline = str_deadline!
504
-
505
- info.timeline = str_timeline!
506
-
507
- info.note = str_note!
508
-
509
-
510
-
511
- Common.edit_CData(a: gSel_AData, b: gSel_BData, c: info)
512
-
513
-
514
-
515
- self.navigationController?.popViewController(animated: true)
516
-
517
- }
518
-
519
-
520
-
521
- @IBAction func onClickBtnDelete(_ sender: Any) {
522
-
523
- let alert = UIAlertController(title: "注意", message: "案件を削除してもよろしいですか?", preferredStyle: UIAlertController.Style.alert)
524
-
525
- alert.addAction(UIAlertAction(title: "キャンセル", style: UIAlertAction.Style.default, handler: nil))
526
-
527
- self.present(alert, animated: true, completion: nil)
528
-
529
- alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
530
-
531
- switch action.style{
532
-
533
- case .default:
534
-
535
- Common.remove_CData(a: gSel_AData, b: gSel_BData, c: gSel_CData.id)
536
-
537
- self.navigationController?.popViewController(animated: true)
538
-
539
- print("default")
540
-
541
- case .cancel:
542
-
543
- print("cancel")
544
-
545
- case .destructive:
546
-
547
- print("destructive")
548
-
549
- }}))
550
-
551
- }
552
-
553
-
554
-
555
- }
556
-
557
-
558
-
559
- ```