2017-08-07 3 views
1

J'ai un scrollView (sous-classé à partir du UITableView() personnalisé) qui a le nombre de lignes et de colonnes et défile dans les directions horizontale et verticale. Je dois ajouter les données dynamiquement au scrollView lorsque le bouton d'action flottante est pressé.Ajouter dynamiquement des données à la table lorsque le bouton d'action flottante est pressé

MISE À JOUR: J'étais capable d'afficher les données dynamiques avec succès dans les lignes et les colonnes. Mais je ne veux pas charger mon scrollView avec toutes les données dynamiques lors du défilement, car les données sont trop volumineuses pour être traitées. Au lieu de cela, je dois d'abord afficher 5 colonnes et lorsque l'utilisateur appuie sur le bouton d'action flottante, les données doivent être rajoutées dynamiquement aux lignes et aux colonnes avec un nombre de 5 colonnes et x lignes.

Je suis coincé dans l'ajout de données dynamiques à scrollView lorsque le bouton d'action flottante est pressé. Aussi comment montrer seulement 5 colonnes initialement et ajouter plus de 5 * n colonnes quand le bouton d'action de flottement est pressé.

Toute suggestion ou aide est très appréciée. Merci :)

Répondre

0

Je suggère d'utiliser un CollectionView qui a un support de défilement horizontal intégré au lieu d'un TableView personnalisé. Pour le "bouton d'action flottante" je suggère de créer une vue séparée qui a une étiquette qui dit à l'utilisateur de libérer pour charger plus d'éléments et se déplace lorsque l'utilisateur atteint la fin de la scrollView. Dans l'exemple suivant, la vue load more a une largeur de 100px et suggère que l'utilisateur relâche son doigt après avoir fait glisser la vue 85px.

Swift 3

@IBOutlet fileprivate weak var loadMoreView: UIView! 
@IBOutlet fileprivate weak var loadMoreLabel: UILabel! 
@IBOutlet fileprivate weak var loadMoreConstraint: NSLayoutConstraint! 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    if scrollView.contentOffset.x + scrollView.frame.size.width > scrollView.contentSize.width { 
     loadMoreView.isHidden = false 
     loadMoreLabel.text = "Load more" 
     if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width > 85 { 
      loadMoreLabel.text = "Release" 
     } 

     if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width < 100 { 
      loadMoreConstraint.constant = 100 - ((scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width) 
     } 
    } else { 
     loadMoreView.isHidden = true 
     loadMoreConstraint.constant = 100 
    } 
} 

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 
    if scrollView.contentOffset.x + scrollView.frame.size.width > scrollView.contentSize.width { 
     if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width > 85 { 
      // TODO: <Load more logic here> 
     } 
    } 
} 

La charge plus de vue a les contraintes suivantes, où le "Aligner Trailing" contrainte est liée à la loadMoreConstraint IBOutlet dans le code ci-dessus.

enter image description here

+0

Je l'ai fait verrouiller la partie ScrollView. Je vous remercie. Seule la fonctionnalité de presse du bouton d'action n'est pas terminée. Je ne suis pas en mesure de recharger les données sur le clic du bouton flottant ... à la place, les données sont rafraîchies –