2017-08-24 90 views
0

我是新来的迅速,现在用Fscalender在SWIFT它的正常工作,但我想添加事件到Fscalender,我可以从Json的获取事件FSCalender事件显示在快捷

enter image description here

我想展示在压光机的事件,我可以尝试一些代码,但它不工作得到了一些错误,请帮助如何显示

var EventsData = [Event]() 

    all events are stored Into Event 


    fileprivate lazy var dateFormatter2: DateFormatter = { 
     let formatter = DateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd" 



     return formatter 
    }() 

内的Json

01压延机事件个

显示事件

  func compareDate(date : String){ 
       let date = date 

       let dateFormatter = DateFormatter() 
       dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
       let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate 

===>> After this line showing Fatal error 

       dateFormatter.dateFormat = "yyyy-MM-dd" 
       let datenew = dateFormatter.string(from: dateFromString as Date) 
       print("datee",datenew) 

      } 


      func calendar(_ calendar: FSCalendar, willDisplay cell: FSCalendarCell, for date: Date, at position: FSCalendarMonthPosition) { 

       let dateFormatter3 = DateFormatter() 

       dateFormatter3.dateFormat = "yyyy-MM" 
       let dateString3 = dateFormatter3.string(from: date) 

       //print("datenew1",dateString3) 


       strcond = dateString3 as NSString 

       print("datenew1",strcond!) 

      } 

      func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int { 
       let dateString = self.dateFormatter2.string(from: date) 

       for d in EventsData{ 
        let date = d.eventDate 


        let dateFormatter = DateFormatter() 
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
        let dateFromString : NSDate = dateFormatter.date(from: date!)! as NSDate 
        dateFormatter.dateFormat = "yyyy-MM-dd" 
        let datenew = dateFormatter.string(from: dateFromString as Date) 
        if datenew.contains(dateString) { 
         return 1 
        } 
       } 
       return 0 

      } 

      func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventColorFor date: Date) -> UIColor? { 
       let dateString = self.dateFormatter2.string(from: date) 


       for d in EventsData{ 
        let date = d.eventDate 

        let dateFormatter = DateFormatter() 
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
        let dateFromString : NSDate = dateFormatter.date(from: date!)! as NSDate 
        dateFormatter.dateFormat = "yyyy-MM-dd" 
        let datenew = dateFormatter.string(from: dateFromString as Date) 


        print("new calendar",dateString) 


        if datenew.contains(dateString) { 
         return UIColor.purple 
        } 
       } 
       return nil 
      } 


      func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) { 
       if monthPosition == .previous || monthPosition == .next { 
        calendar.setCurrentPage(date, animated: true) 

        print("title date",date) 
       } 
      } 

如何显示在日历事件?

回答

0

在我的代码一些改变它的做工精细显示FsCalender事件后

enter image description here

inside Json 



      if let event_list = jsonData["events"] as? NSArray { 

             for i in 0 ..< event_list.count { 
              if let event = event_list[i] as? NSDictionary { 
               self.EventsData.append(Event(
                eventId: event["eventId"] as? String, 
                eventName:event["details"] as? String, 
                eventDate: event["date"] as? String 
                ) 
               ) 
              } 

             } 
             self.do_refresh() 
            } 


    func do_refresh() 
     { 
      DispatchQueue.main.async(execute: { 

       self.calender.reloadData() 

       return 
      }) 
     } 


    Fscalender Implementation 

    func calendar(_ calendar: FSCalendar, willDisplay cell: FSCalendarCell, for date: Date, at position: FSCalendarMonthPosition) { 

      let dateFormatter3 = DateFormatter() 

      dateFormatter3.dateFormat = "yyyy-MM-dd" 
      let dateString3 = dateFormatter3.string(from: date) 

      strcond = dateString3 as NSString 
     } 


     func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int { 
      let dateString = self.dateFormatter2.string(from: date) 
      print("this count first ",self.EventsData.count) 
      for d in EventsData{ 

       let date = d.eventDate 
       let dateFormatter = DateFormatter() 
       dateFormatter.dateFormat = "MM-dd-yyyy" 
       let dateFromString : NSDate = dateFormatter.date(from: date!)! as NSDate 
       dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
       let datenew = dateFormatter.string(from: dateFromString as Date) 
       if datenew.contains(dateString) { 
        return 3 
       } 
      } 
      return 0 

     } 

     func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventColorFor date: Date) -> UIColor? { 
      let dateString = self.dateFormatter2.string(from: date) 
      for d in EventsData{ 
       let date = d.eventDate 
       let dateFormatter = DateFormatter() 
       dateFormatter.dateFormat = "MM-dd-yyyy" 
       let dateFromString : NSDate = dateFormatter.date(from: date!)! as NSDate 
       dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
       let datenew = dateFormatter.string(from: dateFromString as Date) 


       if datenew.contains(dateString) { 
        return UIColor.init(red: 10, green: 200, blue: 399, alpha: 300) 
       } 
      } 
      return nil 
     } 
+0

您可以设置类似事件标题,事件起始日期,活动截止日期 –

+0

是数据当u点击活动日期其显示标题,如果你点击三个点它的显示标题 – naga

+0

如果你有它的演示请分享。实际上我想在其中添加事件。并在点击事件用户需要显示该事件。 –