2012-10-23 11 views
22

Używam presentViewController w kodzie xcode i nie wiem, co powinno się zakończyć.co powinno się zakończyć w presentViewController?

Kod podany przez dokumentacją xcode:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0); 

Przykład że używam:

[self presentViewController:second animated:YES completion:<#^(void)completion#>]; 

Co należy przejść do realizacji?

Odpowiedz

40

Można użyć poniższego kodu:

[self presentViewController:second animated:YES completion:^{ }]; 

lub można po prostu przejść NULL

[self presentViewController:second animated:YES completion:NULL]; 

Blok zakończenie służy do wykonywania wszelkich zadań po przedstawieniu kontroler widoku, kod napisany wewnątrz bloku ukończenia zostanie wykonany dopiero po wyświetleniu widoku.

+12

Lub być bardziej idiomatycznym zero zamiast NULL – powerj1984

+3

NULL jest idiomatyczne dla obiektów C, w tym bloków; patrz [przykładowy kod firmy Apple] (https://developer.apple.com/library/IOs/featuredarticles/Short_Practical_Guide_Blocks/index.html#//apple_ref/doc/uid/TP40009758-CH1-SW8). –

+0

@CraigMcMahon, "Updated: 2010-08-15' –

2

Można użyć następującego kodu dla prezentując pogląd

[[self navigationController] dismissViewControllerAnimated:YES completion:NULL]; 

Poniżej znajduje się kod dla tej

SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
[self presentViewController:second animated:YES completion:nil]; 

Więcej szczegółów sprawdzić jabłkiem forum discussion

17

@try ten

[self presentViewController:second animated:YES completion:^{[self animationCompleted];}]; 


-(void)animationCompleted{ 

    // Whatever you want to do after finish animation 

    NSLog(@"Animation Completed") 

} 

jeśli nie chcesz nic robić po zakończeniu animacji

[self presentViewController:second animated:YES completion:NULL]; 
1

Swift 2,0


Uchwyt coś na zakończenie

viewController.presentViewController(anotherViewController, animated: true, completion: { 
    // Whatever you'd like to do when presentViewController completes :) 
}) 

Albo zrobić nic po zakończeniu

viewController.presentViewController(anotherViewController, animated: true, completion: nil) 
Powiązane problemy