Ich habe versucht, ein View-Layout mit zwei einfachen Containern nebeneinander auf iPad-Dashboard-Art zu implementieren.
Ich habe durch zahlreiche Beispiele gelesen und natürlich die Apple View Controller Referenz für View-Controller und im Allgemeinen, aber ich habe ein seltsamstes Problem, das hoffentlich eine einfache Erklärung hat.
Ich habe die zwei Sichtcontainer nebeneinander hinzugefügt, die jeweils einen Viewcontroller mit einer anderen Hintergrundfarbe, einen runden Rect Button und ein Label enthalten. Und zu Testzwecken habe ich dem "mainViewController" auch eine Round Rect-Schaltfläche hinzugefügt.
Also ziemlich geradlinig und einfach. Jede Ansicht wird in die Containeransicht geladen, aber ich kann mit keiner von ihnen interagieren (wenn auf die Schaltfläche geklickt wird, geschieht NICHTS, keine blaue Hervorhebung, es ist also keine Frage des Delegierens oder irgendeine Aktion von den Schaltflächen wird empfangen oder nicht, weil nichts dergleichen ist implementiert). Allerdings funktioniert das Klicken auf den Button, den ich in den "mainViewController" gesteckt habe, fehlerlos (blau blinkend wie immer). Eine andere seltsame Sache ist, dass die Hintergrundfarbe auch nicht auf den Containeransichten angezeigt wird ?! Nur die Tasten und Beschriftungen.
Programm wie folgt:
Dateien: ViewController.h und .m (ist "mainViewController") sidebarViewController.h und .m (in diesen Dateien wurde nichts geändert, UIViewController) resultsViewController.h und .m (in diesen Dateien wurde nichts geändert, UIViewController) AppDelegate.h und .m (keine Änderung) Storyboard
ViewController.h, Outlets, die mit jeder Containeransicht im Storyboard erstellt und verbunden wurden.
%Vor%Storyboard-ID, die im Storyboard auf sidebarViewcontroller und Resultsviewcontroller gesetzt ist.
ViewController.m, alles nach dem Buch (oder wahrscheinlich nicht, aber wie es mir scheint)
%Vor%(Ich hatte auch self.xxxxView und hatte auch die addChildViewController-Anweisung zuerst in der Reihenfolge)
Ok, mein Verdacht ist natürlich, dass es etwas mit der View-Hierarchie zu tun hat, die Views sind "hinter" der rootViewController-View und daher nur nicht anklickbar. Was (wenn etwas) in dem App-Delegat getan werden muss, damit dies funktioniert? Oder habe ich in diesem Code etwas anderes falsch gemacht?
Bearbeiten: Habe einen weiteren Hinweis auf etwas gefunden, was falsch sein könnte: Als ich "Auto Layout" für das Storyboard deaktivierte, erschienen die Ansichten und funktionierten (!) aber komplett verzerrt, aber jetzt bekomme ich zumindest die richtige Hintergrundfarbe und die Buttons sind am Arbeiten. Kann jemand das reparieren, ohne das automatische Layout zu deaktivieren? da ich denke, dass ich dann mein Layout programmatisch machen muss? : (
Vielen Dank,
Der gesamte Code, den Sie haben, ist unnötig und verursacht wahrscheinlich Ihre Probleme. Wenn Sie Ihre Containeransichten in IB hinzugefügt haben, erstellt es automatisch diese eingebetteten View-Controller für Sie (und passt sie an die Größe der Containeransicht an). Hast du die bekommen? Sie müssen lediglich ihre Klassen in die Klassen Ihrer Unterklassen-View-Controller ändern. Wenn Sie von Ihrem "Haupt" -Sichtcontroller aus auf diese Controller zugreifen müssen, können Sie über die Eigenschaft childViewControllers einen Verweis darauf erhalten.
Tags und Links ios uiview storyboard parent-child uiviewcontroller