Saya memiliki hierarki pengontrol tampilan dan pengontrol paling atas ditampilkan sebagai modal dan ingin tahu cara menampilkan bilah navigasi saat menggunakan
'UIViewController:presentViewController:viewControllerToPresent:animated:completion'
Dokumen untuk 'presentViewController: animasi: penyelesaian:' catatan:
'Di iPhone dan iPod touch, tampilan yang disajikan selalu dalam layar penuh. Di iPad, presentasi bergantung pada nilai di properti modalPresentationStyle. '
Untuk 'modalPresentationStyle', dokumen mengatakan:
Gaya presentasi menentukan bagaimana pengontrol tampilan yang disajikan secara sederhana ditampilkan di layar. Di iPhone dan iPod touch, pengontrol tampilan modal selalu disajikan dalam layar penuh, tetapi di iPad terdapat beberapa opsi presentasi yang berbeda.
Adakah cara untuk memastikan bahwa bilah navigasi terlihat di bawah bilah status setelah kontrol tampilan ditampilkan sendiri? Haruskah saya menafsirkan dokumen sebagai, Anda tidak mendapatkan opsi iPhone / iPod dan hanya di iPad?
Sebelumnya, saya menggunakan 'UIViewController:presentModalViewController:animated'
yang berfungsi dengan baik, tetapi sejak iOS 5.0, API sudah usang jadi saya beralih ke yang baru.
Secara visual, yang ingin saya lakukan adalah membuat pengontrol baru meluncur dari bawah layar, seperti yang biasa dilakukan API lama.
[memperbarui dengan kode]:
// My root level view:
UIViewController *vc = [[RootViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
navController = [[UINavigationController alloc] initWithRootViewController:vc];
....
// Within the RootViewController, Second view controller is created and added
// to the hierarchy. It is this view controller that is responsible for
// displaying the DetailView:
SecondTierViewController *t2controller = [[SecondTierViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:t2controller animated:YES];
// Created by SecondTierViewController
DetailViewController *controller = [[DetailViewController alloc] initWithNibName:nil
bundle:[NSBundle mainBundle]];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.modalPresentationStyle = UIModalPresentationCurrentContext;
[self.navigationController presentViewController:controller
animated:YES
completion:nil];
sumber
(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'
). Bagaimana cara kerjanya?Navigasi:
Akan kembali:
Navigasi:
Akan kembali:
sumber
Bisakah anda menggunakan:
Kembali (saya pikir):
sumber
Saya memiliki masalah yang sama di ios7. Saya menyebutnya di selector dan itu bekerja pada ios7 dan ios8.
sumber
Yang
[self.navigationController pushViewController:controller animated:YES];
dilakukan hanyalah menganimasikan transisi, dan menambahkannya ke tumpukan pengontrol navigasi, dan beberapa barang animasi bilah navigasi keren lainnya. Jika Anda tidak peduli dengan animasi batang, maka kode ini akan berfungsi. Bilah memang muncul di pengontrol baru, dan Anda mendapatkan gerakan pop interaktif!Edit: Maaf, presentViewController akan mengisi layar penuh. Anda perlu membuat transisi khusus, dengan CGAffineTransform.translation atau semacamnya, menganimasikan pengontrol dengan transisi, lalu menambahkannya ke viewControllers navigationController.
sumber
Cepat 3
sumber
Versi Swift: Ini menyajikan ViewController yang disematkan di Pengontrol Navigasi.
sumber
Saya menggunakan kode ini. Ini berfungsi dengan baik di iOS 8.
sumber
Satu solusi
sumber
Jika Anda tidak menyetel properti modalPresentationStyle (seperti UIModalPresentationFormSheet), bilah navigasi akan selalu ditampilkan. Untuk memastikan, selalu lakukan
Ini akan selalu menampilkan bilah navigasi.
sumber
Jika Anda menggunakan NavigationController di Swift 2.x
sumber
coba ini
sumber