2015-12-15 1 views
0

(1) Lorsque je clique sur une annotation/une broche, mon animation fonctionne correctement. Une tableview glisse vers le haut. Lorsque je clique sur la carte (didDeselectAnnotationView), la vue de table saute à la position finale. MAIS: Lorsque je clique sur une cellule (didSelectRowAtIndexPath) l'animation glisse parfaitement vers le bas.animateWithDuration saute (parfois) à la position finale sans animation

Alors, quelle est la différence entre cliquer sur la carte et cliquer sur tableViewCell? Ils utilisent tous les deux la même fonction.

(2) Un autre point: Dans mon tableauAfficher du contenu dans mes cellules. Lorsque j'essaie de définir une image, l'image apparaît correctement, mais toutes les animations sont coupées. Après cela, chaque animation haut/bas saute.

Sooo je suis confus. Il n'y a pas d'erreurs Je lis: Lorsque animateWithDuration a un conflit ou qu'il y a des actions UI en même temps, animateWithDuration saute. D'accord. Mais comment puis-je gérer cela? Quelqu'un a-t-il un tutoriel ou des conseils généraux? Je ne sais pas où chercher mes erreurs.

J'ai essayé un peu avec dispatch_asycn mais rien ne fonctionne.

Merci de l'aide et désolé quand le anglais est pas parfait :)

Certains code: (1) L'animation:

func animateAllInformationAboutSingleDevice(up: Bool) { 
    // dispatch_async(dispatch_get_main_queue(), { 
    if up { 
     self.animationNSLayoutConstraint.constant += CGFloat(255) 
    } else { 
     self.animationNSLayoutConstraint.constant -= CGFloat(255) 
    } 

    UIView.animateWithDuration(Constants.animationTime, animations: {() -> Void in 
     self.tableViewController.layoutIfNeeded() 
     }, completion: { 
      (value: Bool) in 
      self.tableViewController.reloadData() 
    }) 

    // }) 
} 

La fonction de suppression:

func deleteAllInformationAboutVehicle(annotation: MKAnnotation) { 

    if let carAnnotation = annotation as? CarAnnotation { 

     if carAnnotation.itemId != "" { 
      setImageToDefaultImage() 
      //dispatch_async(dispatch_get_main_queue(), { 
      self.animateInformationScreen(false) 
      //}) 

     } 
    } 
} 

(2) définition de l'image dans tableView:

dispatch_async(dispatch_get_main_queue(), { 
      cell.carImage?.clipsToBounds = true 

      if let image = globalCurrentImageOfCar { 

       cell.carImage.image = GUITools.cropToBounds(image) 

      } 
     }) 

Répondre

0

Pour votre premier numéro, essayez d'appeler le self.tableViewController.layoutIfNeeded() avant de modifier vos constantes de contrainte et d'exécuter le bloc d'animation.

Il se peut que la vue n'ait pas été positionnée à sa position précédente avant d'essayer d'animer la nouvelle.

+0

J'ai appelé self.tableViewController.layoutIfNeeded() dans viewDidAppear() alternativ dans viewDidLoad() mais les deux ne fonctionnent pas. – kuzdu

0

chose étrange ok ...

Dans mon func mapView(mapView: MKMapView, didDeselectAnnotationView view: MKAnnotationView) { il est tout à fait d'appeler l'importation tableViewController.reloadDate()

Malheureusement, je ne sais pas pourquoi. Je pense que chaque fonction/code ou autre doit appeler reloadData avant le début de l'animation. Si quelqu'un sait, s'il vous plaît donner un commentaire. @Christopher Kevin Howell: merci pour l'aide