2017-06-02 32 views
1

Ist es möglich, meine Sammlung Ansicht vom Scrollen zu stoppen, indem Sie Code in der Sammlung Ansicht Cell .swift Datei schreiben. Ich möchte in der Lage sein, das Scrollen zu stoppen, wenn der Benutzer auf eine Schaltfläche in der Zelle klickt und dann das Scrollen zulässt, wenn die Schaltfläche erneut gedrückt wird.Steuerung collectionView Scrollen innerhalb von collectionView Zelle

Antwort

3

Erstellen von benutzerdefinierten Delegaten für Ihr Handy

protocol CustomCellDelegate: class { 
    func cellDidSetScrolling(enabled: Bool) 
} 

class CustomCell: UICollectionViewCell { 

    var delegate: CustomCellDelegate? 

    // .... 
} 

zuordnen Delegat in cellForItem auf die Schaltfläche Aktion

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    // dequeue cell and assign delegate 
    var cell: CustomCell? 
    cell.delegate = self 
    return cell 
} 

Anruf Zelle Delegierten Zelle. Verwendet button.tagenabled Wert

func buttonAction() { 
    button.tag = button.tag == 0 ? 1 : 0 // toggle value 
    delegate?.cellDidSetScrolling(enabled: button.tag == 1) 
} 

Implementieren Delegierten in ViewController

class ViewController: UIViewController, CustomCellDelegate { 

    func cellDidSetScrolling(enabled: Bool) { 
     collectionView.isScrollEnabled = enabled 
    } 
} 

Glücklich zu bestimmen Codierung!

+0

Ehrfürchtig. Was bedeutet es, wenn button.tag gleich 1 ist? – Honey

+0

Der Code schaltet den Wert von isScrollEnabled um. Das heißt, wenn das Scrollen bei Aktivierung aktiviert ist, wird es durch Antippen der Schaltfläche deaktiviert und umgekehrt. –

+0

Ich frage etwas anderes. Korrigiere mich, wenn ich falsch liege: Standardmäßig ist das Button-Tag auf '0' gesetzt (ich meine, du brauchst ihm keinen Initialwert zu geben. Richtig) ... also sobald es angeklickt wurde, stellst du es auf '1' und machen Sie Ihre Entscheidung von 'isScrollEnabled' basierend darauf ... Sie missbrauchen im Grunde die Tag-Eigenschaft, um diese Manipulation durchzuführen ... – Honey

Verwandte Themen