5

Ich habe eine benutzerdefinierte horizontale Sammlungsansicht mit 1 Zeile und ich möchte Pull hinzufügen, um die Funktionalität zu aktualisieren, die standardmäßig oberhalb meiner Zellenzeile angezeigt wird. Ich möchte, dass der Benutzer die Sammlungsansicht von links nach rechts ziehen kann, um das UIRefreshControl zu aktivieren. Irgendwelche Ideen?Horizontale UICollectionView mit UIRefreshControl

Vielen Dank im Voraus.

Antwort

1

Dafür benötigen Sie die UIScrollViewDelegate Methode

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint offset = scrollView.contentOffset; 
    CGRect bounds = scrollView.bounds; 
    CGSize size = scrollView.contentSize; 
    UIEdgeInsets inset = scrollView.contentInset; 
    float y = offset.x + bounds.size.width - inset.right; 
    float h = size.width; 


    float reload_distance = 75; //distance for which you want to load more 
    if(y > h + reload_distance) { 
     // write your code getting the more data 
     NSLog(@"load more rows"); 

    } 
} 
+0

Danke für den obigen Code. Ich möchte nur erwähnen, dass es funktioniert, wenn Sie mehr Daten laden möchten, nachdem Sie das Ende Ihrer Scroll-Tabellenansicht/Sammelansicht erreicht haben, nicht oben. – hyd00

5

Grundsätzlich ist die Antwort oben erklärt Ihnen zu implementieren, wie in Objective-C eine Last mehr in einem UICollectionView zu tun. Wie auch immer, ich glaube, die Frage war, wie man pull um diese Komponente horizontal zu aktualisieren.

Ich glaube nicht, Sie horizontal ein UIRefreshControl hinzufügen kann, sondern den vorherigen Code zu berücksichtigen und eine Umstellung auf Swift machen kam ich mit dem folgenden

NICHT VERGESSEN bis zu Ihrer UICollectionView Bounce Eigenschaft SET TO TRUE

func scrollViewDidScroll(scrollView: UIScrollView) { 
    let offset = scrollView.contentOffset 
    let inset = scrollView.contentInset 
    let y: CGFloat = offset.x - inset.left 
    let reload_distance: CGFloat = -75 
    if y < reload_distance{ 
     scrollView.bounces = false 
     UIView.animateWithDuration(0.3, animations: {() -> Void in 
      scrollView.setContentOffset(CGPointMake(0, 0), animated: false) 
     }, completion: { (Bool) -> Void in 
      scrollView.bounces = true 
     }) 
    } 
} 

auch und um Probleme mit der kontinuierlichen zu vermeiden, ziehen ich etwas Code hinzugefügt das Prellen vorübergehend zu entfernen, animieren de blättern zurück nach rechts und dann wieder das Prellen zu ermöglichen. Das wird Ihnen den gleichen Effekt wie das UIRefreshControl geben.

Schließlich, wenn Sie ein Ladesymbol mein Vorschlag, es hinter dem Controller so hinzuzufügen, ist zu haben, wenn Sie ziehen Sie können es sehen, hinter

1

einfach Hinzufügen der Obj-C-Version von Julio Bailon Antwort, die funktioniert zum Ziehen der CollectionView von oben nach links von links nach rechts

CGPoint offset = scrollView.contentOffset; 
    CGRect bounds = scrollView.bounds; 
    CGSize size = scrollView.contentSize; 
    UIEdgeInsets inset = scrollView.contentInset; 
    float y = offset.x - inset.left; 
    float h = size.width; 


    float reload_distance = -75; //distance for which you want to load more 
    if(y < reload_distance) { 
     // write your code getting the more data 
     NSLog(@"load more rows"); 

    } 
Verwandte Themen