2017-09-28 4 views
0

Ich habe vor kurzem begonnen, Xcode und Anfänger zum Erstellen von Apps zu verwenden. Ich bin auf etwas gestoßen, das ich gerne umsetzen würde, aber die Forschung war nicht ganz klar/kompliziert zu verstehen.Xcode: TableView-Zelle zum Erstellen von ViewController

Ich habe eine TableView mit Wochentagen und auch eine segmentierte Control, die diese Tage dreimal dupliziert. Ich frage mich, wie ich User-Klick bekommen kann, um mich zu einem alternativen ViewController zu bringen, abhängig davon, welcher Tag es ist und welches Segment des segmentierten Controllers ausgewählt ist, ohne 21 View-Controller im Storyboard erstellen zu müssen.

Ich habe einen ViewController verwendet und eine Steckdose zu einem TableView für diese Einrichtung gemacht.

TableView with segmentedController

Antwort

0

kennen Sie delegieren einer Tabellen- Verfahren ->didSelectedRowAtIndexPath

you can simply write 
let vc = UIViewController() 
/* 
you can add informations here 
*/ 
present(vc, animated: true) 

und innerhalb dieser Methode können Sie die indexPath verwenden, um die Zelle, die Sie

erhaltengeklickt haben
let cell = tableView.cellForRowAt(indexPath) 

jetzt können Sie die Informationen in dieser Zelle erhalten

+0

Diese Lösung scheint einfach und in meinem Verständnis. Ich habe einen Pastebin erstellt: https://pastebin.com/qRaHsftd mit meinem Code, wie würde ich diese Lösung implementieren, wenn ich einen TableView als eine Steckdose verwendet habe? – Sasuke

+0

sollten Sie den didSelectedRowAtIndexPath genauso implementieren, wie Sie die cellForRowAtIndexPath-Methode implementiert haben, –

+0

Awesome! Ich habs! – Sasuke

0

Sie können einen Viewcontroller haben, die im Grunde ein Rezept für den Viewcontroller ist, Sie gehen mögen.

Zum Beispiel möchten Sie einen Viewcontroller mit einer Beschriftung anzeigen, die eine Kombination der Nummer aus der segmentierten Steuerung und dem Datum angibt, auf das der Benutzer geklopft hat.

Wenn Sie jetzt einen ViewController mit einem Label im Storyboard erstellen, spielt der Text auf dem Label keine Rolle. Sie können den Code verwenden, um den Text nach Belieben zu ändern.

Im TableView-Controller können Sie die didSelect-Delegate-Methode Ihrer Tabellenansicht verwenden, um den Viewcontroller darzustellen und die Beschriftung auf die Werte des segmentierten Steuerelements und die Zelle, die angezapft wird, zu setzen.

Ich glaube, Sie nur ein paar mehr Informationen über iOS und Programmierung im Allgemeinen müssen deshalb empfehle ich Ihnen die folgenden iTunes U Kurs sehen:
https://itunes.apple.com/us/course/developing-ios-10-apps-with-swift/id1198467120
Es hat alles, was Sie brauchen

+0

Dank. Also in diesem Rezept ViewController, sagen wir, dass ich ein Eingabefeld für den Benutzer hatte, um ein Label zu ändern, würde dieser Text nur an dem gegebenen Tag und Segment erscheinen, die sie gewählt haben? Würde dieses Geschäft auch für diesen bestimmten Tag/Segment speichern, wenn sie sich entschieden hätten, zu einem anderen Bildschirm zu gehen und zurück zu kommen? – Sasuke

+0

Nein, wenn Sie die normale Art der Präsentation eines Viewcontrollers verwenden und Sie gehen zurück die Viewcontrollers Informationen verloren ist, wenn Sie Daten speichern möchten, sollten Sie es in einer anderen Klasse tun, sollten Sie google für weitere Informationen über MVC (Modell View Controller), ist es ein Design-Paradigma, um Ihnen zu helfen, Ansichten und Logik zu trennen – Simon

0

einen Controller Detailansicht erstellen mit zwei Variablen (Ex - DAYNAME und selectedSegmentIndex). Und in der aktuellen Viewcontroller "Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath)" Push detailsViewController mit diesen Details wie diese

let objViewController: DetailsViewController? = UIStoryboard.mainStoryboard().instantiateViewController(withIdentifier: "DetailsViewController") as? DetailsViewController 
    objViewController?.dayName = dayName 
    objViewController?.selectedSegment = segmentControl.selectedSegmentIndex 
    navigationController?.pushViewController(objViewController ?? UIViewController(), animated: true) 
Verwandte Themen