2016-11-04 22 views
0

Ich habe eine UIViewController, die aus einer XIB-Datei erstellt wird.viewDidLoad und ViewDidAppear werden nicht aufgerufen

ich initialisieren es wie folgt aus:

_sharedSingleton = [[SlipChangesViewController alloc] init]; 
      [[NSBundle mainBundle] loadNibNamed:@"SlipChangesViewController" owner:_sharedSingleton options:nil]; 

ich fügen Sie die Ansicht des UIViewController zum subview in einem anderen UIViewController:

[self.view addSubview:slipChangesVC.view]; 

Nun ist die seltsame Sache ist, wird die Sicht erfolgreich hinzugefügt die Unteransicht, aber aus irgendeinem Grund werden sowohl viewDidLoad als auch vieWillAppear nicht aufgerufen. Die Methode wird jedoch erfolgreich aufgerufen, um das Shared Singleton und die Methode init zu erstellen.

Ich habe doppelt, um sicherzustellen, überprüft:

  • Keine der UIViews oder UIViewControllers sind nil
  • Die Auslässe aus dem xib richtig verbunden
  • ich [super viewDidLoad] und [super viewWillAppear] nenne

Ich habe verschiedene Threads auf StackOverflow überprüft und habe dort Vorschläge ohne Erfolg versucht. z.B. Aufruf [slipChangesVC view]

Weiß jemand, warum diese 2 Methoden nicht aufgerufen werden?

+0

Vielleicht werfen Sie einen Blick auf diese http://StackOverflow.com/A/32965187/2237587. Unterer Teil der Antwort – Simon

Antwort

1

Sie sind eine SlipChangesViewController Blick auf bestehende Ansicht hinzufügen. In diesem Fall werden viewDidLoad und viewWillAppear nie aufgerufen. Sie benötigen einen Viewcontroller für dieses

versuchen dieses

- (void)addChildViewC:(UIViewController *)childViewC 
{ 
    [self addChildViewController:childViewC]; 
    childViewC.view.frame = self.view.bounds; 
    [self.view addSubview:childViewC.view]; 
    [childViewC didMoveToParentViewController:self]; 
} 
1

Dies ist nicht der richtige Weg zum Hinzufügen von Child View Controller. Auf diese Weise erhält der Ansichtsbesitzer Änderungen. Ansicht, die von ihrem Ansichtscontroller getrennt ist und der Ansichtscontroller den Empfang von viewDidLoad und anderen Ansichtsmethoden beendet. schauen Sie bitte in die bereits beantworteten Frage

Wenn Sie wollen es, funktioniert: add UIViewController in subview

0

ich nie ein View-Controller ein Singleton machen würde hinzuzufügen. Es ist kein Singleton. Es wird erschaffen, zerstört, neu erschaffen, wieder zerstört.

Ich denke, ViewDidLoad wird nur einmal während der Lebensdauer eines View-Controller aufgerufen. Wenn Sie also einen Singleton machen, könnte das zu vielen Problemen führen.

Verwandte Themen