TableView in ScrollView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • TableView in ScrollView

    Hallo zusammen,

    ich habe ein kleines Problem.
    Ich bin auf einen neuen iMac umgezogen und habe alles installiert und eingerichtet. Nun habe ich ein Xcode Projekt was ich unter 11.3.1 erstellt habe in 14.2 geöffnet und alles veraltete angepasst.

    Mein Problem:
    Ich habe in einem ViewController ein ScrollView und darin mehrere StackViews ( sowohl horizontal als auch vertikal ). In einem StackView gibt es am unteren Ende ein tableView mit der Klasse SelfSizingTableView welches sich in der Höhe so anpassen soll, dass ich nur mit dem ScrollView ans Ende der tableView zu kommen.

    Ich habe mal einen Screenshot von der Klasse erstellt und einen vom Aufbau des ViewControllers den ich zum teilen hoch lade.


    [Blockierte Grafik: https://share-your-photo.com/4b72c88951/album]

    Aktuell habe ich, wenn ich App ausführe an der Stelle einen kleinen TableViewBereich den ich scrollen kann, der aber stets wieder ein Stück nach oben scrollt ( ich denke das das tableView höher ist als der Bereich den man sehen kann ) und das scrollView lässt sich garnicht scrollen.

    Hat Jemand eine Idee woran das liegen könnte? ?(
  • Hallo MCDan,
    danke für deine Informationen.

    Ich habe nun den View komplett umgebaut - er besteht nun aus einem TableView der mittels Constraints über den vollen Screen geht.
    Ich habe oben ein Header-View, danach die Prototype-Cell ( also den Bereich den ich über ein Array füttere ) und danach einen Footer-View in dem ein Textfield und ein Absenden-Button ist.
    Der Header passt sich in der Höhe automatisch an und die Prototypenzelle, die ein Textfield enthält passt sich auch schön an die länge des Textes an.

    Wenn ich nun scrolle sieht alles ganz wunderbar aus. Klicke ich nun in das Textfeld im Footer fährt das Keyboard aus und schiebt alles nach oben - das soll so sein. Zwei Fehler habe ich aber:
    1. ist zwischen dem Keyboard ( Oberkante ) und Textfeld ( Unterkante ) ein Freiraum - ich habe keine Ahnung wo der herkommt.
    2. schiebt sich der Inhalt oben am Rand des Displays auch unter die Uhr und die Akkuanzeige.

    Fange ich nun an zu tippen auf dem Keyboard um einen Text einzugeben ist auf meinem Hardware-iPhone alles so wie beschrieben - auf dem Simulator aber schiebt sich der Footer, samt enthaltenem Textfeld, nach ganz oben.

    Hast Du vielleicht eine Idee woran der Abstand zwischen Keyboard und Textfeld liegen kann!?

    Viele Grüße und nochmals danke für deine Unterstützung.

    C-Quellcode

    1. @objc func keyboardWillShow(notification: NSNotification) {
    2. if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
    3. self.view.frame.origin.y -= keyboardSize.height // - 80
    4. }
    5. }
    6. @objc func keyboardWillHide(notification: NSNotification) {
    7. self.view.frame.origin.y = 0
    8. }
  • Hallo @MCDan,

    ich hatte es jetzt "satt" mich damit rumzuschlagen und habe auf deinen Rat gehört und alles in einen TableViewController gepackt.
    Im Header habe ich nun alles was ich brauche - die Cells dienen nur den Kommentaren. Im Footer gibt es dann ein Textfeld und einen Absenden-Button.

    Jetzt habe ich das Problem, dass der Segue nicht mehr funktioniert.
    Ich habe einen neuen UITableViewController erstellt, mit CocoaTouch als Subklasse von UITableView eine Klasse für selbigen erstellt und die Inhalte aus dem alten VC rübergeholt.
    Nun klappt der Segue nicht mehr. Der Controller ist von keinem Punkt in der app erreichbar. Habe schon den Identifier vom Segue geändert.

    Zu Verständnis was ich tue / versuche / vorher geklappt hat:
    tableView VC 1 hat in der cell eine tapGesture. die wird auch initialisiert. diese ruft im VC dann eine Funktion auf und übergibt eine ID.
    Dann wird diese ID in prepare for segue auch übergeben und und performSegue wird auch ausgeführt - aber der segue passiert nicht. Die App friert ohne Hinweis / Fehler ab.

    Woran kann es liegen?

    VG Steffe