2010-08-13 14 views
13

nadal nie może zrozumieć, co robię źle. Po prostu próbuję uzyskać widok modalny za pomocą kontrolera nawigacyjnego w środku.Widok Modal ze sterownikiem nawigacyjnym

Oto mój projekt http://www.matthewpateman.com/New.zip

Czy ktoś może mi powiedzieć co robię źle? Chcę „ShopModalView.xib” pop-up w kontroler nawigacji, ale jej po prostu diplaying pustą stronę ...

+1

Proszę skomentować lub zaktualizować poprzednie pytanie zamiast po prostu opublikowania drugiego. – Justin

+0

Masz rację. Przepraszam ... –

+6

również, nikt nie chce ściągnąć potencjalnie szkodliwego pliku ZIP. użyj http://gist.github.com/ lub friendpaste lub czegoś, aby wyświetlić odpowiedni kod –

Odpowiedz

44

przedstawić go jako modalne widoku i zawiń w kontroler kontrolera nawigacji, aby zapewnić pasek nawigacyjny w przypadku, gdy chcesz dodawać, edytować, zapisywać, itp przyciski

ModalViewController *modalController = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil]; 
modalController.delegate = self; // Set any delegate you may have 

// This is where you wrap the view up nicely in a navigation controller 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:modalController]; 

// You can even set the style of stuff before you show it 
navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

// And now you want to present the view in a modal fashion 
[self presentModalViewController:navigationController animated:YES completion:nil]; 
+0

wow! Dzięki za pomoc! To było bardzo pomocne. Naprawdę doceniam to, że poświęcasz swój czas na naprawę. Jak powiedziałeś! Działa świetnie - ładnie i prosto. –

+1

To nie jest problem, ale pamiętaj, aby wziąć kilka lekcji: brakowało plików XIB w XCode dla niektórych kontrolerów widoku, brakowało pliku MainWindow.xib, dlatego pojawił się błąd "NSInternalInconsistencyException" (miał on nic ładować w 'applicationDidFinishLaunching' i nie można początkowo ustawić kontrolera nawigacyjnego). Ukrywałeś również pasek kontrolera nawigacji przed wyświetleniem widoku. Zachowaj nazwane XIB tak samo jak klasę kontrolera widoku, która je obsługuje ... to o jedną rzecz mniej do zapamiętania. – iwasrobbed

+0

Możesz utworzyć zupełnie nowy przykładowy projekt i skonfigurować go teraz, gdy masz coś do roboty. XCode ma faktycznie szablon kontrolera nawigacyjnego do pracy, jeśli wiesz od początku, że będziesz go używać (XCode -> Nowy projekt -> Aplikacja iPhone OS -> Aplikacja oparta na nawigacji -> odznacz "Użyj danych podstawowych do przechowywania") – iwasrobbed

3
ShopModalViewController *shopMVC = [[ShopModalViewController alloc] initWithNibName:@"ShopModalViewController" bundle:nil]; 
//set properties 
UINavigationContrller *navCon = [[UINavigationController alloc] initWithRootViewController:shopMVC]; 
[self presentModalViewController:navCon animated:YES]; 
[shopMVC release]; 
[navCon release]; 
+0

Użyłem twojego kodu, ale dostaję ten komunikat o błędzie: 2010-08-13 19: 55: 54.718 Nav [95599: 207] *** Kończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInternalInconsistencyException", powód : "Nie można załadować NIB w pakiecie: –

2

dla tych, którzy chcą to zrobić w Swift 3.x:

// Obtain your viewcontroller 
let viewController = ... 

// Initialize a navigation controller, with your view controller as its root 
let navigationController = UINavigationController(rootViewController: viewController) 
navigationController.navigationBar.barStyle = .blackTranslucent 

// Present it modally from the current controller 
present(navigationController, animated: true, completion: nil) 
+0

Dzięki, działa na to, czego szukałem. – Hoan

Powiązane problemy