質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%

解決済

カレンダー日選択時の他日の反応を無くしたいです。

uAd30HzDXwVQVwb
uAd30HzDXwVQVwb

総合スコア4

1回答

0評価

0クリップ

138閲覧

投稿2022/06/11 06:44

編集2022/06/12 18:48

下記コードについて質問があります。長いコード失礼します。
日付を押すとその日が選択されるのですが、他の日が一瞬色付きます。
これを光らないようにしたいです。
お力をお貸しいただきたいです。よろしくお願いします。

swift

import SwiftUI import FSCalendar struct CalendarPage2:View{ @State var show: Bool = false @State var selectedDate = Date() @State var array : [Date] @State var s = 0 @State var m1 = Date() @State var m2 = Date() @State var sortarrays:[Sortarray] var body: some View{ ScrollView{ VStack{ Calendarpage(selectedDate:$selectedDate,array:$array).frame(height:360) Text(selectedDate,style:.date).padding() Button(action:{self.show = true;m1=selectedDate;m2=selectedDate}){Text("+")}.sheet(isPresented:self.$show){ SecondView(show:$show,selectedDate:$selectedDate,array:$array,newstart:$m1,newfinish:$m2,sortarrays:$sortarrays,s:$s) } if(array.count == 0){ } else{ ForEach(0..<array.count, id:\.self){index in if let savedValue = UserDefaults.standard.data(forKey: "sortkey") { let decoder = JSONDecoder() if let arraysort = try? decoder.decode([Sortarray].self, from: savedValue) { if(equals(arraysort[index].arraystart,arraysort[index].arrayfinish,selectedDate)){ Text("\(arraysort[index].arraystart,style: .time)\(arraysort[index].arrayfinish,style: .time)") Text("\(arraysort[index].arraytitle)") Text("\(arraysort[index].arraymemo)") } } } } } } } } init() { let a = UserDefaults.standard.array(forKey: "arraykey") as? [Date] ?? [] let so = UserDefaults.standard.array(forKey: "sortkey") as? [Sortarray] ?? [] _array = State(initialValue: a) _sortarrays = State(initialValue: so) } func equals(_ date1: Date, _ date2: Date,_ date3: Date) -> Bool { let calendar = Calendar.current let components1 = calendar.dateComponents([.year, .month, .day], from: date1) let components2 = calendar.dateComponents([.year, .month, .day], from: date2) let components3 = calendar.dateComponents([.year, .month, .day], from: date3) if(components1 == components2 && components2 == components3){ return true } else{ return false } } } struct Sortarray:Codable{ var arraytitle : String var arraymemo : String var arraystart : Date var arrayfinish : Date } struct SecondView: View { @Binding var show:Bool @Binding var selectedDate:Date @Binding var array:[Date] @Binding var newstart:Date @Binding var newfinish:Date @Binding var sortarrays:[Sortarray] @Binding var s:Int @State var newarray : [Date]=[] @State var newtitle = "" @State var newmemo = "" var body: some View { Button(action:{save();s=1;self.show.toggle()}){Text("保存")} Text("タイトル") TextField("",text:$newtitle) Text("メモ") TextEditor(text:$newmemo) DatePicker("開始時間",selection:$newstart) DatePicker("終了時間",selection:$newfinish) } func save() { if(s==0){ for index in 0..<array.count{ if let savedValue = UserDefaults.standard.data(forKey: "sortkey") { let decoder = JSONDecoder() if let arraysort = try? decoder.decode([Sortarray].self, from: savedValue) { sortarrays.append(Sortarray(arraytitle:arraysort[index].arraytitle,arraymemo:arraysort[index].arraymemo,arraystart:arraysort[index].arraystart,arrayfinish:arraysort[index].arrayfinish)) } } } } else{ } sortarrays.append(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish)) sortarrays.sort(by: {$1.arraystart > $0.arraystart}) let encoder = JSONEncoder() if let encodedValue = try? encoder.encode(sortarrays) { UserDefaults.standard.set(encodedValue, forKey: "sortkey") } array.append(selectedDate) UserDefaults.standard.set(array, forKey: "arraykey") } } struct Calendarpage: UIViewRepresentable { @Binding var selectedDate:Date @Binding var array:[Date] func makeUIView(context: Context) -> UIView { typealias UIViewType = FSCalendar let fsCalendar = FSCalendar() fsCalendar.dataSource = context.coordinator fsCalendar.delegate = context.coordinator return fsCalendar } func updateUIView(_ uiView: UIView, context: Context) { guard let v = uiView as? FSCalendar else{return} context.coordinator.array = array v.reloadData() } func makeCoordinator() -> Coordinator { return Coordinator(self,array:array) } class Coordinator: NSObject,FSCalendarDataSource, FSCalendarDelegate{ var array:[Date] var parent : Calendarpage init(_ parent: Calendarpage,array:[Date]) { self.parent = parent self.array = array } func calendar(_ calendar:FSCalendar, didSelect date:Date, at monthPosition:FSCalendarMonthPosition){ parent.selectedDate = date } func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int { if array.contains(date) { return 1 } else { return 0 } } } } struct CalendarPage_Previews: PreviewProvider { static var previews: some View { Group{ CalendarPage2() } } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る