Ich verwende eine UITableView
mit benutzerdefinierten Zellen. Jede Zelle hat ihre eigene NIB-Datei und einen Controller. In einer Zelle möchte ich dem Benutzer ermöglichen, ein Datum auszuwählen. Ein Standarddatum wird in der Zelle angezeigt. Wenn der Benutzer auf die Zelle klickt, sollte ein UIPickerView
auf der Zelle erweitern. Ich habe mehrere ähnliche Fragen im Forum gefunden, aber alle verwenden eine zusätzliche Zelle, die die UIPickerView
enthält. In meiner App muss ich eine Nib-Datei verwenden, die sowohl das Label als auch den Pickerview enthält. Wenn die Zelle angeklickt wird, sollte ich vielleicht die PickerView anzeigen und die Zellenhöhe aktualisieren und wenn die Zelle erneut angeklickt wird, sollte ich sie verstecken und die Höhe erneut aktualisieren. Ich habe irgendwo ein Beispiel gesehen, aber es wurde in Objective-C geschrieben. Denkst du, dass es möglich ist, es auf diese Weise zu implementieren, und gibt es ein schnelles Beispiel?Erweitern Sie TableViewCell, ohne eine zusätzliche Zelle zu verwenden
2
A
Antwort
3
Nun, um dieses Problem zu lösen, müssen Sie einfach einen festen vertikalen Abstand zwischen Etikett und Picker in Ihrer Zellenansicht einrichten. Siehe Screenshot
Dann jedes Mal Benutzer auf Zelle tippt man einfach Tabellenansicht mit aktualisierten Höhe für die Zelle neu zu laden. Hier ist der Quellcode:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
fileprivate var cellExpanded = false
// MARK: - UITableView datasource & delegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PickerCell")!
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return (cellExpanded) ? 260:44
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
cellExpanded = !cellExpanded
tableView.reloadData()
}
}
Verwandte Themen
- 1. TableViewCell Ungelöste Identifier wenn Zelle
- 2. Erweitern und reduzieren Tabellenansicht Zelle
- 3. (Swift) erweitern und Tableview Zelle kollabieren, wenn
- 4. Wie bekomme ich die tableViewCell nicht zu erweitern, wenn Swipe zu löschen
- 5. TYPO3 CMS daran hindern, eine zusätzliche Medienbeziehung standardmäßig zu erweitern
- 6. Laravel 5.2 Erweitern der Auth mit dem Gerüst um eine zusätzliche Tabelle zu verwenden
- 7. Erweitern Sie die UITableView-Zelle in UITableViewstylePlain
- 8. Eine Zelle erweitern, um Unterkategorien anzuzeigen
- 9. XCode 6.3 Hinzufügen von Rändern zu Tableviewcell
- 10. Swift - Wie Zelle in UICollectionView zu erweitern
- 11. Verwenden Sie indirekt, um eine Zelle zu referenzieren, um Formel
- 12. wie Sie eine Schaltfläche hinzufügen, ohne benutzerdefinierte Zelle auf einem UITableView zu verwenden?
- 13. Gibt es eine Möglichkeit, Web-Sockets auf react-native zu verwenden, ohne zusätzliche Abhängigkeiten zu installieren?
- 14. Django ohne zusätzliche Tabellen?
- 15. Fragmentiermanager holen, ohne die Aktivität zu erweitern
- 16. Wiederverwendbare TableViewCell asynchrone Höhe
- 17. Wie greife ich auf eine benutzerdefinierte TableViewCell nach Index zu?
- 18. Erweitern Sie xUnit.NET, um benutzerdefinierten Code zu verwenden, wenn Sie eine Klasse bearbeiten und Testmethoden lokalisieren
- 19. Sublime Text: Akzeptieren Sie vorgeschlagene Autocomplete ohne es zu erweitern
- 20. UIImageView auf TableViewCell seine Zwänge fehlt auf Zelle klicken
- 21. Anpassen von TableViewCell Moving Grabber
- 22. Erweitern und erkunden JSON-Objekte ohne zu console.log (Obj) sie
- 23. den Rückgabewert einer Funktion zu verwenden, wenn es ohne eine zusätzliche Variable
- 24. Eine TextView erweitern, ohne andere Ansichten abzudecken
- 25. So erweitern Sie die CollectionView-Zelle auf den Vollbildmodus
- 26. Android getServerAuthCode() ohne zusätzliche Berechtigungen
- 27. Eine zirkuläre Warteschlange durchlaufen, ohne eine temporäre Warteschlange zu verwenden
- 28. Verwenden Sie zusätzliche Parameter im Laden dynamisch
- 29. Können Sie eine Funktion in TypeScript erweitern?
- 30. Zugriff auf Tableviewcell mit Tableview-Instanz
Es gibt Möglichkeiten, es zu tun. Zeig uns, was du bisher versucht hast und wo du geblieben bist. – arunjos007
Der einfachste Weg ist die Verwendung von Auto-Layout, um die Höhe Ihrer Zellen zu definieren. Dies bedeutet, dass Einschränkungen zwischen dem Inhalt der Zelle und sich selbst hinzugefügt werden. Wenn Sie dann Ihre Auswahlfunktion anzeigen möchten, ändern Sie die Eigenschaft "constant" einer Integritätsbedingung so, dass die Zelle erweitert wird, sodass die Auswahl angezeigt wird. – paulvs