Saya membutuhkan contoh pengontrol tampilan root.
Saya mencoba pendekatan tersebut:
UIViewController *rootViewController = (UIViewController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
Pengembalian: null :
Juga ketika saya mencoba mendapatkan berbagai pengontrol:
NSArray *viewControllers = self.navigationController.viewControllers;
Ini mengembalikan hanya satu pengontrol, tetapi itu bukan pengontrol tampilan root saya.
Jika saya mencoba mengambil dari pengontrol navigasi:
UIViewController *root = (UIViewController*)[self.navigationController.viewControllers objectAtIndex:0];
Pengembalian: null :
Ada ide mengapa? Apa lagi yang bisa saya coba untuk mendapatkan instance dari pengontrol tampilan root saya?
Terima kasih.
objective-c
swift
ios5
uiviewcontroller
uinavigationcontroller
Anak jalanan
sumber
sumber
Jawaban:
jika Anda mencoba mengakses yang
rootViewController
Anda setel di appDelegate. coba ini:Objective-C
Cepat
Cepat 3
Cepat 4 & 4.2
Swift 5 & 5.1 & 5.2
sumber
Objective-C
Swift 2.0
Cepat 5
sumber
Seperti yang disarankan di sini oleh @ 0x7fffffff, jika Anda memiliki UINavigationController, lebih mudah melakukannya:
Kode dalam jawaban di atas mengembalikan pengontrol UINavigation (jika Anda memilikinya) dan jika ini yang Anda butuhkan, Anda dapat menggunakannya
self.navigationController
.sumber
Kecuali jika Anda memiliki alasan yang bagus, lakukan ini di pengontrol root:
Dan saat Anda ingin memberi tahu:
sumber
Cepat 3
sumber
Cara cepat untuk melakukannya, Anda dapat memanggil ini dari mana saja, ini mengembalikan opsional jadi hati-hati tentang itu:
Ini termasuk sebagai fungsi standar dalam:
https://github.com/goktugyil/EZSwiftExtensions
sumber
Swift 3: Chage ViewController withOut Segue dan kirim AnyObject Use: Identity MainPageViewController pada target ViewController
atau jika Anda ingin Mengubah Tampilan Pengontrol dan mengirim Data
sumber