Saya baru saja menemukan error yang menunjukkan NSInvalidArgumentException
pesan ini di aplikasi yang tidak melakukan ini sebelumnya.
Aplikasi mencoba menyajikan pengontrol aktif UITabBarController: 0x83d7f00.
Saya memiliki UITabBarController
yang saya buat di AppDelegate
dan memberikannya array UIViewControllers
.
Salah satunya saya ingin mempresentasikan secara sederhana ketika disadap. Saya melakukannya dengan menerapkan metode delegasi
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Jika pengontrol tampilan itu dari kelas yang ingin saya sajikan secara sederhana, saya mengembalikan NO dan melakukannya
[tabBarController presentModalViewController:viewController animated:YES];
Dan sekarang saya mendapatkan kesalahan itu, yang tampaknya berarti bahwa Anda tidak dapat menyajikan secara sederhana pengontrol tampilan yang aktif di tempat lain (di tabbar ...) Saya harus mengatakan saya menggunakan XCode 4.2 Developer Preview 7, jadi ini adalah iOS 5 (Saya tahu tentang NDA, tapi saya rasa saya tidak memberikan rincian terlarang). Saat ini saya tidak memiliki penginstalan XCode untuk menguji apakah ini error saat dikompilasi terhadap SDK iOS4, tetapi saya hampir sepenuhnya yakin tidak.
Saya hanya ingin bertanya apakah ada yang mengalami masalah ini atau punya saran
sumber
Jawaban:
Asumsikan Anda memiliki tiga pengontrol tampilan yang dibuat seperti ini:
Anda telah menambahkannya ke bilah tab seperti ini:
Sekarang Anda mencoba melakukan sesuatu seperti ini:
Ini akan memberi Anda kesalahan karena Tab Bar Controller memiliki pegangan kematian pada pengontrol tampilan yang Anda berikan. Anda tidak dapat menambahkannya ke larik pengontrol tampilan di bilah tab, atau Anda tidak dapat menyajikannya secara sederhana.
Apple mengharapkan Anda untuk memperlakukan elemen UI mereka dengan cara tertentu. Ini mungkin terkubur dalam Panduan Antarmuka Manusia di suatu tempat sebagai "jangan lakukan ini karena kami tidak mengharapkan Anda pernah ingin melakukan ini".
sumber
Saya memiliki masalah yang sama. Saya mencoba menampilkan pengontrol tampilan setelah memberhentikan.
Ketika saya mencoba melakukannya tanpa animasi, itu berfungsi dengan sempurna sehingga masalahnya adalah pengontrol masih hidup. Saya pikir solusi terbaik adalah menggunakan
dismissViewControllerAnimated:completion:
untuk iOS5sumber
Dalam kasus saya, saya mencoba untuk menyajikan viewController (saya memiliki referensi viewController di TabBarViewController) dari pengontrol tampilan yang berbeda dan itu menabrak pesan di atas. Dalam hal ini untuk menghindari presentasi, Anda dapat menggunakan
Mungkin membantu seseorang.
sumber
Saya memiliki masalah yang sama. Saya menyelesaikannya. Anda dapat mencoba kode ini:
sumber
Kesalahan masalah yang sama terjadi pada saya ketika saya mencoba
present
pengontrol tampilan anak alih-alihUINavigationViewController
induknyasumber
Hapus saja
dan simpan
sumber
Daripada menggunakan:
kamu bisa memakai:
sumber
Dalam kasus saya, saya sedang mempresentasikan
rootViewController
suatuUINavigationController
ketika saya seharusnya menampilkanUINavigationController
dirinya sendiri.sumber