【发布时间】:2021-01-10 12:17:17
【问题描述】:
我是一名设计师,并尝试开发一个待办事项列表应用程序。 在应用程序中,用户在日历中选择一天,它将显示所选日期的待办事项列表。 但是我如何将选定的日期从 FSCalendar(UIKIT) 传递到待办事项列表(SwiftUI)?
非常感谢!
我在 github 中的应用演示: https://github.com/ElvishR/FSCalendar-To-Do-List-Test.git
内容视图:
import SwiftUI
import Foundation
class UserData: ObservableObject{
@Published var name = "Helsdfsflo"
}
struct ContentView: View {
@ObservedObject var userData = UserData()
var body: some View {
Text(userData.name)
Button(action:{
print(self.userData.name)
}){
Text(" click to show the selected date")
}
CalendarModuleView()
.frame(width: .infinity, height: 300.0, alignment: .center)
}
}
日历视图
import SwiftUI
import FSCalendar
class CalendarModule: UIViewController, FSCalendarDelegate {
var calendar = FSCalendar()
var formatter = DateFormatter()
var SelectedDate = ""
let integration = UserData()
fileprivate lazy var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd"
return formatter
}()
override func viewDidLoad() {
super.viewDidLoad()
calendar.delegate = self
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
initCalendar()
view.addSubview(calendar)
}
private func initCalendar() {
calendar.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 300.0)
calendar.appearance.todayColor = UIColor.systemGreen
calendar.appearance.selectionColor = UIColor.systemBlue
}
//selected day
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition){
// Do the same inside this function and you should be fine
formatter.dateFormat = "yyyy-MM-dd"
SelectedDate = formatter.string(from: date)
ContentView().userData.name = formatter.string(from: date)
print(ContentView().userData.name)
print("calendar did select date \(self.formatter.string(from: date))")
}
func calendar(calendar: FSCalendar!, didSelectDate date: NSDate!) {
formatter.dateFormat = "yyyy-MM-dd"
SelectedDate = formatter.string(from: date as Date)
print("(self.formatter.string(from: date))")
}
}
【问题讨论】: