Der presentViewController konnte nicht funktionieren
Kopierte ich eine funktionierende viewcontroller-Klasse aus einem anderen Projekt in ein neues Projekt. Ich kann nicht die Ansicht zu laden, die in das neue Projekt. Im alten Projekt habe ich verwendet presentModalViewController. In der neuen ich Schaffe es nicht, die Ansicht zu laden, verwenden Sie entweder presentModalViewController oder presentViewController
Ich versuche zu laden präsentieren, die aus meiner Sicht wichtigsten view-controller.
Hier ist, was mein Haupt-view-controller-interface sieht aus wie...
// ViewController.h
#import <UIKit/UIKit.h>
#import "RequestDialogViewController.h"
@interface ViewController : UIViewController <RequestDialogViewControllerDelegate> {
}
- (void)requestDialogViewDidDismiss:(RequestDialogViewController *)controller withResponse:(NSString*)response;
Ich bin mit presentModalViewController so...
RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:requestIPViewController];
[self presentModalViewController:navigationController animated:YES];
und presentViewController so...
RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController" bundle:nil];
[self presentViewController:requestIPViewController animated:YES completion:nil];
Was vermisse ich in dem neuen Projekt? Die init-Methode feuert, aber viewDidLoad nicht und es wird nichts angezeigt.
Dank
InformationsquelleAutor der Frage user278859 | 2012-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
ViewController
ist der root-Ansicht-controller, es kann nicht ein modal-view-controller aus den eigenenviewDidLoad
, weil an diesem Punkt es nicht über Informationen wie die Bildschirmgröße.Wenn andere view-Controller bereits angezeigt haben, das funktioniert. Wenn der root-view-controller ist ein
UINavigationController
wird, sehen Sie eine Ansicht Schiebetüren von der rechten Seite, während der modal-Ansicht Folien, die aus dem Boden.Sowieso, für Ihre
ViewController
, die bald wie Sie sich darstellen konnte, ist es nach sichtbar werden. Verwenden Sie einen timer für diese ist unzuverlässig; die älteren und langsameren Geräten dramatisch länger werden die Ladezeiten.Für mehr Zuverlässigkeit, implementieren
viewDidAppear:
fürViewController
. Tun, noch mit den timer-system, um eine zusätzliche Verzögerung; im Bruchteil einer Sekunde sollte ausreichend sein. Obwohl die Präsentation der modal-view-controller innerhalbviewDidAppear
arbeitete für mich in der iOS 5.1 simulator, Die Präsentation einer modal-view-controller beim laden von einem anderen ViewController sagt es manchmal nicht passieren.InformationsquelleAutor der Antwort Dondragmer
Habe ich es gelöst. Ich war der Versuch, die Ansicht hast, laden des Haupt-view-controller. Nicht sicher, warum es nicht dort arbeiten, aber stattdessen bin ich nun ein timer, der eine Methode aufruft präsentieren den view-controller nach der Hauptansicht geladen und es funktioniert jetzt mit...
Danke an diejenigen, die geantwortet.
InformationsquelleAutor der Antwort user278859
Als @Dondragmer sagte, wenn Sie wollen, um Ihren viewController in der root Ansicht viewDidLoad, wird es scheitern.Sobald Ihr viewController ist dazu bereit, können Sie Ihr neues viewController.
So, können Sie tun, in
InformationsquelleAutor der Antwort SeanChense
Ich hatte das gleiche problem. Aber meine situation ist die
presentViewController
aufgerufen wird, nachdem diedismissViewControllerAnimated
für einen anderen ViewController. Meine Lösung ist das verschieben derpresentViewController
bis zur Fertigstellung blockdismissViewControllerAnimated
.InformationsquelleAutor der Antwort Zhou Hao
Präsentieren modalViewController:
Zum nutzen aller Programmierer ab, geben Sie es anstelle von kopieren und einfügen.
Sieht es aus wie Sie waren der Versuch, einen nav-controller als view-controller in der ersten Probe, dann waren Sie mit der falschen Methode in der zweiten.
InformationsquelleAutor der Antwort Nate Symer