2016-06-11 6 views
1

Ich suchte im Internet nach Stunden, aber ich kann keine Lösung für mein Problem finden.Wie weist man einem UIView (in UICollectionView) einen bestimmten ViewController zu?

Ich habe eine Ansicht in meinem Storyboard, das ein UICollectionView enthält. Ich habe die Zellen der UICollectionView wirklich groß eingestellt (nur eine kann auf dem Bildschirm erscheinen, Sie müssen horizontal wischen, um die anderen zu sehen). In meiner Anwendung benutze ich dieses Layout, um dem Benutzer einige Fragen nacheinander zu stellen. Der Benutzer kann auf diese Fragen antworten, indem er Tasten berührt, sich auf einer Karte bewegt, ein Datum auswählt usw. Jede Frage hat das gleiche Layout. Sie werden in einer Box mit einem Titel und einer Schaltfläche angezeigt. Aus diesem Grund habe ich mich für eine UICollection-Ansicht entschieden.

Ich möchte eine bestimmte Ansicht anzeigen (die Optionen, die der Benutzer beantworten kann (Schaltflächen, Map, DatePicker, etc ..)) für jede Frage im blauen Rechteck (siehe Bild unten).

A screenshot of my view

war meine Idee, mehrere Viewcontrollers in meinem Storyboard und in der Lage zu sagen, zu erstellen: „ok, für die erste Frage (erste Zelle), legen Sie die Ansicht XXX in den Behälter für die zweite, setze die Ansicht YYY, etc ... ".

Wie kann ich das tun?

Ich habe versucht, ein ContainerView hinzuzufügen, aber wir können nur eine Ansicht im Storyboard verknüpfen.

ich in der Lage möchte, so etwas tun:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! SearchQuestionBox 
    cell.questionAnswersZone.view = storyboard.viewNumberOne //Just for the idea haha 

    return cell 

} 
+0

Sie können eine benutzerdefinierte Sammlungszelle für jede Frage erstellen, wenn Sie sie in der Sammlungsansicht anzeigen möchten. – tbilopavlovic

+0

Warum nicht, aber ich muss den Titel und die Schaltfläche auf jede benutzerdefinierte Sammlung Zelle setzen und wenn ich mich entscheide, etwas zu ändern, muss ich es auf jedem ändern, die nicht wirklich sauber ist ... Nein? – Tim

+0

Erstellen Sie dann eine benutzerdefinierte Ansicht, laden Sie sie von XIB und fügen Sie sie der benutzerdefinierten Zelle als Unteransicht hinzu. Benutzerdefinierte Zelle wird Titel und Schaltfläche haben, und anzeigen, die sich als Container für Ihre benutzerdefinierte Ansicht verhalten werden – tbilopavlovic

Antwort

1

Ich würde vorschlagen, nicht mehrere View-Controller verwenden.

Stattdessen können Sie einfach die Ansichten für jede Zelle zu dem einen Hauptansicht-Controller hinzufügen. Beachten Sie, dass Sie festlegen können, dass ein Ansichtenrahmen außerhalb des Bildschirms angezeigt wird.

+0

Vielen Dank für Ihre Antwort! Findest du nicht, dass es einen besseren Weg dafür gibt? Weil ich das Etikett und den Knopf auf jedem Rahmen kopieren/einfügen muss. Und wenn sich eines Tages das Design ändert, muss ich das neue Design auf jeden einzelnen Rahmen anwenden, was nicht wirklich sauber ist, nein? Ich weiß nicht, ob ich es richtig verstanden habe – Tim

Verwandte Themen