2012-04-02 21 views
0

Ich erhalte einen weißen Bildschirm, nachdem ich einen Modalansicht-Controller vorgestellt habe. Dies ist, wie ich es tun:Weißer Bildschirm nach dem Anzeigen eines modalen Ansichtscontrollers

SomeViewController *controller = [[[SomeViewController alloc] initWithManagedObjectContext:managedObjectContext] autorelease]; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:controller] autorelease]; 
[navController setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
[self presentModalViewController:navController animated:YES]; 

Die Navigationsleiste funktioniert gut, wie ich es in SomeViewController eingerichtet, aber die Inhalt der Ansicht nicht sichtbar ist, und alles, was ich sehe, ist die weiße Hintergrundfarbe der Root-Fenster.

Das Merkwürdige ist, dass das früher funktionierte, aber jetzt nicht mehr. Was könnte das Problem sein?

EDIT:

Dies ist, wie ich SomeViewController erstellen:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self setTitle:@"Some View"]; 

    UIBarButtonItem *sortButton = [[[UIBarButtonItem alloc] initWithTitle:@"Sort" style:UIBarButtonItemStylePlain target:self action:@selector(sortButtonClicked:)] autorelease]; 
    [[self navigationItem] setRightBarButtonItems:[NSArray arrayWithObjects:sortButton, [self editButtonItem], nil] animated:YES]; 

    UIBarButtonItem *backButton = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(dismissModalViewControllerAnimated:)] autorelease]; 
    [[self navigationItem] setLeftBarButtonItem:backButton]; 

    // Hack to force landscape orientation 
    UIViewController *controller = [[UIViewController alloc] init]; 
    [self presentModalViewController:controller animated:NO]; 
    [self dismissModalViewControllerAnimated:NO]; 
    [controller release]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

- (void) viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 
+0

Verwenden Sie Haltepunkte, um festzustellen, ob der SomeViewController * -Controller über Speicher verfügt oder nicht. – tipycalFlow

+0

Es wird mit einer richtigen Speicheradresse zugewiesen. Tatsächlich werden die Methoden der View-Controller richtig aufgerufen (viewDidLoad, etc.). – Gerstmann

+0

Ok. Könnten Sie Code für die Erstellung von 'SomeViewController' posten? – tipycalFlow

Antwort

1

Der weiße Bildschirm wurde durch die xib file des Controllers verursacht, der nicht Teil des target ist (das Kontrollkästchen für die Zielmitgliedschaft wurde deaktiviert).

-1

versuchen

SomeViewController *controller = [[[SomeViewController alloc] init] autorelease]; 

sollte es funktionieren.

+0

Es tut es nicht. Der Inhalt der Ansicht ist immer noch nicht sichtbar. – Gerstmann

+0

entfernen Autorelease für SomeViewController und Navigationscontroller –

+0

omg. Was rätst du ihm? – Gargo

0

Haben Sie zufällig einige andere init meted auch in der SomeViewController-Klasse? Bitte posten Sie die gesamte .m-Datei. Wenn dies der Fall ist, können Sie versuchen, die Methode initWithNibName zu löschen und prüfen, ob der Inhalt angezeigt wird.

EDIT: Ein anderer seltsamer Punkt ist die initWithManagedObjectContext-Methode, die Sie für die ViewController-Instanz verwenden. Kannst du es erklären?

+0

Ich habe keine anderen Init-Methoden definiert. Selbst mit der Standard-Init (nicht überschrieben) funktioniert es nicht. – Gerstmann

+0

Sie sollten nicht die Standard-Init-Methode haben, löschen Sie es ... – o15a3d4l11s2

+0

Ich habe 'initWithManagedObjectContext' auf die Standard-' init' geändert. Es verursacht das Problem nicht. – Gerstmann

Verwandte Themen