2017-08-24 4 views
0

Je suis nouveau rapide, je suis en utilisant Fscalender dans rapide, il fonctionne très bien, mais je veux ajouter les événements à Fscalender, je peux obtenir des événements de JSONFSCalender Events Afficher dans swift

enter image description here

I Want Display les événements de calendrier, je peux essayer une partie du code, mais sa ne fonctionne pas obtenir des erreurs pls aident comment afficher les événements dans calendrier

var EventsData = [Event]() 

    all events are stored Into Event 


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



     return formatter 
    }() 

intérieur Json

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

           for i in 0 ..< event_list.count { 

            if let event = event_list[i] as? NSDictionary { 


             let data = event["date"]as?String 

             let newString = data?.replacingOccurrences(of: "/", with: "-") 

             print("new string data ",newString as Any) 

             self.compareDate(date: newString!) 

             self.EventsData.append(Event(
              eventId: event["eventId"] as? String, 
              eventName:event["details"] as? String, 
              //eventDate: event["date"] as? String 
              eventDate: newString)) 
            } 


           } 
} 

Afficher les événements à

  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) 
       } 
      } 

comment afficher les événements dans le calendrier?

Répondre

0

Après quelques changements dans mon code, il fonctionne très bien montrant des événements dans 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

Êtes-vous en mesure de définir des données comme titre de l'événement, la date de début de l'événement, événement Date d'arrêt –

+0

oui lorsque u cliquez sur date de l'événement son montrer le titre, si vous cliquez sur les trois points son spectacle le titre – naga

+0

si vous avez une démo s'il vous plaît partager. En fait, je veux ajouter un événement en elle. et en tapant sur l'utilisateur de l'événement a besoin de partager cet événement. –