Liebe Leute!
Mir fehlen gerade leider die Ideen, wie ich eine bestimmte Anforderung umsetzen kann.
Und zwar schreibe ich gerade mit meinem team an einer sehr umfangreichen App.
Bei dieser App handelt es sich um eine spezielle Administrationsoberfläche.
Wenn der User die App öffnet, so bekommt er die Möglichkeit, sich anzumelden und alles ist gut.
Sollte das System, welches sich auf einem WebServer befindet, allerdings noch nicht eingerichtet sein, so soll sich ein Installationsassistent öffnen.
Das habe ich an sich schon umgesetzt, ist ja auch nicht besonders tricky.
Jetzt habe ich einen modalViewController (mainViewController) mit einem navigationController, und mehrere weitere viewController (inkl. xib) für die einzelnen Erinrichtungsschritte.
Um den firstViewController am Ende der Einrichtung ("fertig") wissen zu lassen, dass alles geklappt hat (und ihm Informationen über die Einrichtung zukommen zu lassen) habe ich Delegate Protokolle benutzt.
Jetzt habe ich jeden einzelnen viewController zum Delegate gemacht und um alles bis zum Anfang (den erste Delegate) durchzureichen, habe ich dann immer den Delegate "durchgereicht".
Sprich:
Alles anzeigen
Das funktioniert zwar im Prinzip...
Allerdings bekomme ich so nicht nur Warnungen à la "Sending 'id<secondViewControllerDelegate>' to Parameter of incompatible type 'id<thirdViewControllerDelegate>'", sondern bin viel mehr der Überzeugung, dass das nicht so der richtige Weg ist. Ich kann mir einfach vorstellen, dass es da elegantere Methoden gibt.
Auch habe ich schon an das NSNotificationCenter gedacht, allerdings halte ich notifications nicht so für den Brenner.
Man hat mir auch schon oft (nicht zuletzt hier im Forum) absolut von notifications abgeraten und Delegate Protokolle empfohlen (die ich auch viel sexyer finde).
Nun meine Frage:
Hat vielleicht jemand von euch eine saubere Lösung für mich parat?
Wie setzt man so was am schlauesten um? Sollte ich allen Delegate Protokollen den gleichen Namen geben (installerDelegate) ?!
Danke für eure Hilfe, liebe Grüße
Julian
Mir fehlen gerade leider die Ideen, wie ich eine bestimmte Anforderung umsetzen kann.
Und zwar schreibe ich gerade mit meinem team an einer sehr umfangreichen App.
Bei dieser App handelt es sich um eine spezielle Administrationsoberfläche.
Wenn der User die App öffnet, so bekommt er die Möglichkeit, sich anzumelden und alles ist gut.
Sollte das System, welches sich auf einem WebServer befindet, allerdings noch nicht eingerichtet sein, so soll sich ein Installationsassistent öffnen.
Das habe ich an sich schon umgesetzt, ist ja auch nicht besonders tricky.
Jetzt habe ich einen modalViewController (mainViewController) mit einem navigationController, und mehrere weitere viewController (inkl. xib) für die einzelnen Erinrichtungsschritte.
Um den firstViewController am Ende der Einrichtung ("fertig") wissen zu lassen, dass alles geklappt hat (und ihm Informationen über die Einrichtung zukommen zu lassen) habe ich Delegate Protokolle benutzt.
Jetzt habe ich jeden einzelnen viewController zum Delegate gemacht und um alles bis zum Anfang (den erste Delegate) durchzureichen, habe ich dann immer den Delegate "durchgereicht".
Sprich:
Quellcode
- ///////////////////// first.m /////////////////////
- - (IBAction)beginInstallation:(id)sender {
- secondViewController *second = [[secondViewController alloc] init];
- [second setDelegate:self];
- [self presentModalViewController:second animated:YES];
- }
- - (void)installerDidFinishWithSuccess:(BOOL)success andInfo:(NSDictionary *)infos {
- [self dismissModalViewControllerAnimated:YES];
- ///////////////////////////////////////////////
- ////////// Informationen verarbeiten //////////
- ///////////////////////////////////////////////
- }
- ///////////////////// second.m /////////////////////
- - (IBAction)goNext:(id)sender {
- thirdViewController *third = [[thirdViewController alloc] init];
- [third setDelegate:self.delegate];
- [self.navigationController pushViewController:third animated:YES];
- }
- ///////////////////// third.m /////////////////////
- - (IBAction)goNext:(id)sender {
- lastViewController *last = [[lastViewController alloc] init];
- [last setDelegate:self.delegate];
- [self.navigationController pushViewcontroller:last animated:YES];
- }
- ///////////////////// last.m /////////////////////
- - (IBAction)done:(id)sender {
- if ([self.delegate respondsToSelector:@selector(installerDidFinishWithSuccess:andInfo:)]) {
- [self.delegate installerFinishedWithSuccess:YES andInfo:(NSDictionary *)alleInformationen];
- }
- }
Das funktioniert zwar im Prinzip...
Allerdings bekomme ich so nicht nur Warnungen à la "Sending 'id<secondViewControllerDelegate>' to Parameter of incompatible type 'id<thirdViewControllerDelegate>'", sondern bin viel mehr der Überzeugung, dass das nicht so der richtige Weg ist. Ich kann mir einfach vorstellen, dass es da elegantere Methoden gibt.
Auch habe ich schon an das NSNotificationCenter gedacht, allerdings halte ich notifications nicht so für den Brenner.
Man hat mir auch schon oft (nicht zuletzt hier im Forum) absolut von notifications abgeraten und Delegate Protokolle empfohlen (die ich auch viel sexyer finde).
Nun meine Frage:
Hat vielleicht jemand von euch eine saubere Lösung für mich parat?
Wie setzt man so was am schlauesten um? Sollte ich allen Delegate Protokollen den gleichen Namen geben (installerDelegate) ?!
Danke für eure Hilfe, liebe Grüße
Julian