Frage

Ich habe dieses Problem, weil ich originially alles im Haupt NIB gemacht, aber dann lernte nach der Lektüre, dass es besser ist, zu verwenden Subviews.

Ich habe meine IBActions im AppDelegate bekommt, und ich habe erfolgreich verbunden und meine Subviews geladen. Allerdings, wenn ich versuche, meine Tasten in dem Subviews die IBActions im AppDelegate zu verbinden, werden die IBActions unter dem „First Responder“. Sie scheinen in Ordnung zu verbinden, aber wenn die Anwendung läuft sie nicht auslösen, die IBActions (Ich habe dies mit einigen NSLogs bestätigt, es ist nicht ein Fehler in der Code innerhalb der IBActions). Was mache ich falsch?

Danke!

War es hilfreich?

Lösung

Die AppDelegate sollten nur für sehr spezifische Elemente verwendet werden, wie das UIApplicationDelegate Protokoll implementiert (das heißt Methoden wie applicationDidFinishLaunching) oder in einigen Fällen globale Variablen zu speichern.

Sie sollten halten IBActions und anderen Verkaufsstellen in ihren jeweiligen View-Controller-Dateien (das heißt, wenn Sie erstellt MyViewController.h und MyViewController.m, die mit MyViewController.xib verknüpft sind, wo Sie einige Tasten haben, Bilder, etc.). Sie können dann über Ziehen der Inspektor Kontrolle Sie wollen (das heißt TouchUpInside), um die Datei Besitzer werden angeschlossen.

Etwas, das man besser lesen sollte View-Controller verstehen: http : //developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

Normalerweise ist es am besten, einen einzigartigen Blick Controller für jede Ansicht zu erstellen, die Sie den Benutzer präsentieren. Zum Beispiel hatte, wenn ich einen Hauptbildschirm und dann ein „etwa“ oder ein Einstellungsfenster, würde ich jeden der eigenen View-Controller machen. Es hilft, die Dinge besser organisieren als eine Ansicht mit einem ganzen Bündel von Subviews mit, dass Sie verstecken / zeigen und auch die Ladezeiten und die allgemeine Leistung verbessern.

Update für Ihre zweite Frage in den Kommentaren über die App delegieren Zugriff auf:

Als erstes müssen Sie die .h-Datei importieren (das heißt #import "AppDelegate.h") für die AppDelegate in Unabhängig davon, welche View-Controller .m Datei, die Sie für den Zugriff verwenden Wanna was Variablen, Arrays, etc. Sie in den AppDelegate Dateien gespeichert haben. Stellen Sie sicher, dass Sie synthetisieren je nachdem, welche Objekte Sie in den App Delegierten .h-Datei in den App Delegierten .m-Datei zu erstellen, so dass die Getter und Setter erstellt werden (so dass Sie darauf zugreifen können).

Dann im View-Controller .m-Datei, in Egal welche Methode Sie verwenden:

-(void)someMethod { 
 // here we just create a shortcut to the app delegate called "theAppDelegate"
 YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];

 // now you can use the dot notation if you wanna access a variable
 int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;

 // or some array you have stored
 return [theAppDelegate.someArrayYouCreated count]; 
 }

Ich hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top