Mam kontroler widoku A i kliknięcie przycisku, iotworzyłem inny kontroler viewcontroller ze stylem prezentacji jako Arkusz formularza. W drugim widoku kontroler, który jest otwarty, ma dwa przyciski. Teraz, po kliknięciu tych przycisków, drugi kontroler widoku powinien zniknąć, a następny kontroler powinien otworzyć się na kontrolerze widoku A. Ale kiedy próbuję poniżej, inne kontrolery widoku otwierają się w oknie dialogowym Nie wiem, jak odprężyć się na tej ulicy i połączyć ze sobą kolejną scenę.
Odpowiedzi:
0 dla odpowiedzi № 1Nitya, czy wypróbowałeś poniższy fragment kodu, aby odrzucić bieżący kontroler widoku. Użyj go w IBAction przycisku, gdzie chcesz odrzucić viewController: -
self.dismissViewControllerAnimated(true, completion: nil)
0 dla odpowiedzi nr 2
Masz więc kontroler główny root A z przyciskiem. Jeśli naciśniesz ten przycisk, inny kontroler widoku (nazwijmy go B) jest przedstawiony przez A jako arkusz formularza B ma dwa przyciski i jeśli naciśniesz jeden z tych przycisków, B powinno zostać odrzucone i po inny kontroler viewcontroller (powiedzmy C) powinien być przedstawiony przez A.
Apple nie polecam tego rodzajuworkflow, ale możliwe jest jego wdrożenie. Możesz rozważyć użycie kontrolera nawigacyjnego lub kontrolera master-detail zamiast tego. Ale jeśli trzymasz się swojego oryginalnego pomysłu, oto kilka możliwych implementacji:
1. Jeśli korzystasz z storyboardu, a przycisk na B uruchamia rozwijaną zmianę na A, możesz dodać to do końca rozwijanej akcji seque:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"segueThatPresentsC" sender:nil];
});
2. Jeśli programowo przedstawisz swoje viewcontrollers: Zanim przedstawisz B z A możesz skonfigurować przycisk B tak, aby był to cel A, a jego akcja jest metodą zdefiniowaną w A:
- (void) dismissAndPresentC {
[self dismissViewControllerAnimated:YES completion:^{
[self presentViewController:instanceOfC animated:YES completion:nil];
}];
}
Ta sekunda to może nieco mniejszy hack, ale wciąż myląca koncepcja.