2016-03-30 11 views
0

In meinem Code neue Viewcontroller ist nicht in den Navigationscontroller geschoben und wird als das Widget dargestellt.So machen Sie CAAnimation in viewController, die ohne navigationController

-(void) loadBlurWidgetsWithClass:(Class) widgetClass andXib:(NSString*) xibName options:(NSDictionary *)options completion:(void (^)(void))competionBlock 
{ 

    [self unloadBlurWidgetsRemovingView:NO]; 

    self.blurViewController = [[widgetClass alloc] initWithNibName:xibName bundle:nil options:options]; 
    [self.navigationItem.leftBarButtonItem setEnabled:NO]; 
    [self.blurViewController.view setBounds:self.view.bounds]; 
    [self.view addSubview:self.blurViewController.view]; 
    [self.blurViewController.view removeFromSuperview]; 

    self.blurViewController.main = self; 

    [self showBlurViewDynamic:[options[@"dynamic"] boolValue] WithCompletion:^{ 
    for(UIView* v in self.blurViewController.view.subviews) 
    { 
      [_blurView addSubview:v]; 
    } 
    if (competionBlock) { 
      competionBlock(); 
    } 
}]; 

}

Und durch diese in neue Klasse viewWillAppear und viewDidAppear nicht gefeuert. Aber in der Klasse möchte ich Animationen verwenden, die ich in viewDidAppear initialisieren muss. Hast du eine Lösung wie ich ViewDidAppear aufrufen kann oder wie ich Animation machen soll. Vielen Dank im Voraus.

+0

Ich denke, Sie sollten diese Ansicht Controller-DidMoveToParentViewController aufrufen: Methode, mit Darstellung Controller als Parameter darstellen. –

Antwort

1

u brauchen self.blurViewController's Ansicht als Subview nicht seine subview, hinzuzufügen, um viewWillAppear und viewDidAppear View-Controller-Ansicht aufzurufen es sein sollte, aber u tun [self.blurViewController.view removeFromSuperview]; diese Linie entfernt die Ansicht-Controller sehen es keine Ansicht in der Ansicht ist, Controller, um aufzurufen, wird/Methoden angezeigt. Wenn Sie diese Methoden aufrufen möchten, entfernen Sie nicht die Hauptansicht des View-Controllers. Wenn Sie die Ansicht des Haupt-View-Controllers nicht sehen möchten, können Sie die Hintergrundfarbe auf clear oder Alpha auf Null oder etwas über Null setzen.

+0

Diese entschieden mein Problem durch Aufruf von/wurde angezeigt, aber in diesem Fall habe ich ein anderes Problem, [self.blurViewController.view removeFromSuperview]; sollte anwesend sein. Ich gründete eine andere Lösung, um die Funktion aufzurufen, die mit beginAppearanceTransition und endAppearanceTransition aufgerufen wird. Es ist Arbeit, aber ich weiß nicht, wo dies funktioniert. –

+0

dort Methode müssen Sie nicht anrufen, System wird aufgerufen, müssen Sie nur diese Methoden implementieren –

+0

"Erklärung - (void) beginAppearanceTransition: (BOOL) isAppearing animiert: (BOOL) animiert JA wenn die Kind-Ansicht Wenn Sie einen benutzerdefinierten Container-Controller implementieren, verwenden Sie diese Methode, um dem Kind mitzuteilen, dass seine Ansichten erscheinen oder verschwinden sollen. Rufen Sie viewWillAppear nicht auf :, viewWillDisappear :, viewDidAppear: oder viewDidDisappear: direkt. " Und es heißt nicht, dass "viewDidLoad" aufgerufen wird, wenn Aufrufe "beginAppearanceTransition"? –

Verwandte Themen