FSCalender选择日期

时间:2017-02-08 05:46:11

标签: ios

我通过可可豆荚使用FSCalender。我只想获得所选日期/月/年。我只收到当前日期。我得到这样的细节: -

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
    formatter.dateFormat = @"dd.MM.yyyy";  
    NSString *string = [formatter stringFromDate:[NSDate date]]; 
    NSLog(@"CurrentDate=%@",string);  

在字符串中,我得到输出: - 的currentdate = 2017年2月8日

如何实现这一目标。提前谢谢。

2 个答案:

答案 0 :(得分:1)

FSCalendar中有一个委托方法,用于此

// FSCalendarDelegate
- (void)calendar:(FSCalendar *)calendar didSelectDate:(NSDate *)date
{
    // Do something
    // get year , month and day of selected date.

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];

NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];

}

在这里,您将获得 NSDate 的对象,然后您可以将其转换为所需的格式。

请阅读此库FSCalendar

的完整文档

要从日期获得日/月/年,您可以参考以下Stack overflow answer

答案 1 :(得分:0)

有人可以解释如何将DidSelect Date传递给其他视图控制器吗?

'''

import SwiftUI
import FSCalendar
import Combine

struct CalendarController: UIViewControllerRepresentable {

func makeUIViewController(context: 
UIViewControllerRepresentableContext<CalendarController>) -> calendars {
   
    return calendars()
}

func updateUIViewController(_ uiViewController: calendars, context: 
UIViewControllerRepresentableContext<CalendarController>) {
}

} 

class calendars: UIViewController, FSCalendarDelegate  {


var calendar = FSCalendar()
var selectedDate : Date? 

override func viewDidLoad() {
    super.viewDidLoad()
    
    calendar.delegate = self
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    calendar.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 
view.frame.size.width)
    view.addSubview(calendar)
}

func calendar(_ calendar: FSCalendar, didDeselect date: Date, at 
monthPosition: FSCalendarMonthPosition) {
    self.selectedDate = date
        
}



}

struct CalendarView: View {
@Binding var text : String

var body: some View{
    CalendarController().padding().frame(alignment: .top)
    TextField("Enter ...", text: $text)
}

}


struct Calendar_Previews: PreviewProvider {
static var previews: some View {
    CalendarView(text: .constant("Text"))
    
    }
}

'''

我是在JS之后来到Swift的。 我仍然不明白为什么在xcode界面构建器工具中事情如此复杂。