Saya mendapatkan kesalahan berikut di konsol saya:
Aplikasi diharapkan memiliki pengontrol tampilan root pada akhir peluncuran aplikasi
Di bawah ini adalah application:didFinishLaunchWithOptions
metode saya :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set Background Color/Pattern
self.window.backgroundColor = [UIColor blackColor];
self.tabBarController.tabBar.backgroundColor = [UIColor clearColor];
//self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"testbg.png"]];
// Set StatusBar Color
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
// Add the tab bar controller's current view as a subview of the window
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
Di Interface Builder, UITabBarController
delegasi terhubung ke App Delegate.
Adakah yang tahu cara memperbaiki masalah ini?
ios
objective-c
ArtSabintsev
sumber
sumber
Jawaban:
Saya punya masalah yang sama. Periksa main.m Anda Argumen terakhir harus ditetapkan ke nama kelas yang mengimplementasikan protokol UIApplicationDelegate.
sumber
NSStringFromClass
. Begitulah Xcode sekarang membuat file main.m. Sebagai contoh:#import "AppDelegate.h
dan kemudianint retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
self.window
diinisialisasi sepertiself.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
Ganti di AppDelegate
untuk
sumber
addSubview
garis adalah bagian dari template proyek pada versi awal dari Xcode / iOS SDK. Jika aplikasi berjalan jauh, Anda mungkin memilikinya bahkan jika Anda tidak menulisnya.Saya memiliki kesalahan yang sama ketika mencoba untuk mengubah pengontrol tampilan pertama yang dimuat
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Pada awalnya saya tidak benar-benar tahu dari mana kesalahan itu berasal, jadi saya mempersempitnya dan mencari tahu apa yang salah. Ternyata saya mencoba mengubah tampilan tampilan sebelum benar-benar muncul di layar. Solusinya adalah dengan memindahkan kode ini di viewcontroller yang membuat saya kesulitan
- (void)viewDidLoad
untuk
- (void)viewDidAppear:(BOOL)animated
dan kesalahan berhenti muncul. Masalah saya secara khusus disebabkan oleh membuat
UIAlertView
pertunjukan.Dalam kasus Anda, saya sarankan Anda memeriksa kode di pengontrol tampilan aktif tabBarController (karena mungkin masalah dalam pengontrol tampilan itu). Jika itu tidak berhasil, cobalah untuk mengatur pengaturan awal di file nib alih-alih dalam kode - atau jika Anda ingin melakukannya dalam kode, coba pindahkan kode ke metode yang sesuai viewController tabBarController aktif.
Semoga berhasil!
sumber
viewDidLoad:
(tanpa menambahkan bendera), saya juga tidak harus melakukan ini. Bagaimanapun, terima kasih atas sarannya!viewDidLoad
untuk banyak hal, mengatur semua hal pertama kali, seperti menambahkan data keUITableView
. Saya tidak dapat memindahkannya keviewDidAppear:
karena saya hanya ingin api sekali.Saya mendapatkan ini ketika mulai dengan template "Aplikasi Kosong" dan kemudian secara manual menambahkan XIB. Saya memecahkannya dengan menetapkan nama Nib utama seperti yang disarankan oleh Sunny. Langkah yang hilang dalam skenario ini sedang dihapus
dari
Karena itu akan menimpa instance jendela Anda yang dibuat dalam file Xib. Ini dengan asumsi Anda telah membuat ViewController dan menghubungkannya dengan jendela Anda dan App Delegate di file XIB juga.
sumber
Ini terjadi pada saya. Dipecahkan dengan mengedit file .plist. Tentukan nama dasar file nib utama (seharusnya MainWindow.xib). Semoga ini bisa membantu.
sumber
Saya mengalami masalah yang sama baru-baru ini, ketika membangun proyek dengan ios5 SDK. Pada awalnya itu membangun dan berjalan dengan baik, tetapi setelah itu kesalahan muncul.
Dalam kasus saya solusinya agak sederhana.
Apa yang hilang, adalah bahwa entah bagaimana properti Antarmuka Utama di tab ringkasan target aplikasi saya terhapus. Jadi saya perlu mengaturnya lagi.
Jika ini bukan intinya, dan jika tabBarController masih nol, Anda selalu dapat membuat pemrograman dan pengendali root. Sebagai cadangan saya menambahkan kode berikut ke proyek saya
Ini hanya akan berfungsi jika solusi Sho diterapkan juga.
sumber
Saya memutakhirkan ke iOS9 dan mulai mendapatkan kesalahan ini entah dari mana. Saya dapat memperbaikinya tetapi menambahkan kode di bawah ini ke
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
sumber
Tidak ada saran di atas yang menyelesaikan masalah saya. Milik saya adalah ini:
Menambahkan:
setelah:
di delegasi app saya
sumber
sumber
makeKeyAndVisible
tidak menyelesaikan masalah. HANYA ini menyelesaikan peringatan untuk saya. TERIMA KASIH!Storyboard
jugacara menambahkan RootViewController untuk iOS5
jika aplikasi Anda tidak menggunakan RootViewController sampai sekarang, cukup buat satu;) dengan menekan File> New> New File; pilih
UIViewController subclass
nama itu RootViewController , hapus centang dengan XIB untuk antarmuka pengguna (dengan asumsi Anda sudah memilikinya) dan masukkan kode ini di AppDelegate :: didFinishLaunchingWithOptions Andapasti - Anda harus mengimpor RootViewController.h dan membuat variabel
di sini ada artikel yang bagus tentang RootViewController dan AppDelegate,
sumber
Saya juga mengalami kesalahan ini tetapi tidak seperti jawaban yang saya sebutkan sebelumnya adalah karena saya telah menghapus komentar metode 'loadView' pada pengontrol yang baru saya buat (xcode 4.2, ios5).
Bahkan mengatakan kepada saya bahwa metode ini adalah untuk membuat tampilan secara terprogram tetapi saya melewatkannya karena terlihat sangat mirip dengan metode lain seperti viewDidLoad yang biasanya saya gunakan saya tidak menangkapnya.
Untuk menyelesaikannya cukup hapus metode itu jika Anda tidak secara terprogram membuat hierarki tampilan alias menggunakan nib atau storyboard.
sumber
Saya punya masalah ini juga. saya menjalankan proyek saya di xcode4.2.1. Saya sudah membaca semua komentar di sana, tetapi tidak ada yang keren untuk saya. setelah beberapa saat, saya menemukan bahwa saya berkomentar sepotong kode.
maka saya batalkan komentar itu. semuanya baik-baik saja untukku. Semoga ini bisa membantu kalian.
sumber
Pastikan Anda memiliki fungsi ini dalam delegasi aplikasi Anda.
Pastikan didFinishLaunchingWithOptions mengembalikan YA. Jika Anda tidak sengaja menghapus baris 'return YES', ini akan menyebabkan kesalahan. Kesalahan ini mungkin sangat umum terjadi pada pengguna storyboard.
sumber
Dengan tampilan pertama saya,
MenuViewController
saya menambahkan:pada metode App Delegate:
Itu berhasil.
sumber
Ada sedikit perubahan di sekitar iOS 5.0 atau lebih, yang mengharuskan Anda memiliki pengontrol tampilan root. Jika kode Anda didasarkan pada kode sampel yang lebih lama, seperti GLES2Sample , maka tidak ada pengendali tampilan root yang dibuat dalam sampel kode tersebut.
Untuk memperbaikinya (GLES2Sample itu, misalnya), tepat di
applicationDidFinishLaunching
, saya membuat pengontrol tampilan root dan melampirkan glView saya untuk itu.Itu membuat peringatan hilang, dan sebaliknya tidak mempengaruhi aplikasi Anda.
sumber
Cobalah untuk menyambungkan IBOutlet dari pengontrol tab bar untuk membasmi tampilan di Interface Builder alih-alih
Tapi sebenarnya saya belum pernah melihat kesalahan seperti itu sebelumnya.
sumber
Saya memecahkan masalah dengan melakukan hal berikut (tidak ada solusi lain di atas yang membantu):
Dari menu tarik turun yang terkait dengan "Antarmuka Utama" pilih entri lain dan kemudian pilih kembali "MainWindow" lalu bangun kembali.
sumber
Saya menemukan masalah yang sama tetapi saya menggunakan
storyboard
Menugaskan saya
storyboard
InitialViewController
ke jendela sayarootViewController
.Di
dan ini memecahkan masalah.
sumber
Saya mulai mengalami masalah yang sama tepat setelah memutakhirkan ke Xcode 4.3, dan hanya ketika memulai proyek dari awal (yaitu membuat proyek kosong, kemudian membuat UIViewController, dan kemudian Buat file nib terpisah).
Setelah meletakkan SEMUA baris yang saya gunakan, dan memastikan saya memiliki koneksi yang benar, saya terus mendapatkan kesalahan itu, dan file nib yang saya coba muat melalui view controller (yang ditetapkan sebagai rootController) tidak pernah ditampilkan di simulator.
Saya membuat template tampilan tunggal melalui Xcode dan membandingkannya dengan kode saya dan AKHIRNYA menemukan masalahnya!
Xcode 4.3 muncul untuk menambahkan secara default metode - (void) loadView; ke bagian implementasi pengontrol tampilan. Setelah dengan hati-hati membaca komentar di dalamnya, menjadi jelas apa masalahnya. Komentar yang ditunjukkan untuk mengganti metode loadView jika membuat tampilan secara terprogram (dan saya parafrase), sebaliknya TIDAK untuk mengganti loadView jika menggunakan nib. Tidak ada hal lain di dalam metode ini, jadi dalam pengaruh saya menimpa metode (dan tidak melakukan apa-apa) SAAT menggunakan file nib, yang memberikan kesalahan.
SOLUSI adalah untuk sepenuhnya menghapus metode loadView dari bagian implementasi, atau untuk memanggil metode induk dengan menambahkan [super loadView].
Menghapusnya akan lebih baik jika menggunakan file NIB sebagai menambahkan kode lain akan berlaku menimpanya.
sumber
Saya memiliki pesan kesalahan yang sama di log. Saya memiliki aplikasi UIAlertView yang muncul: didFinishLaunchingWithOptions. Saya menyelesaikannya dengan menunda panggilan ke alertView untuk memberikan waktu bagi pengontrol tampilan root untuk menyelesaikan pemuatan.
Dalam aplikasi: didFinishLaunchingWithOptions:
yang memanggil setelah 1 detik:
sumber
Saya memiliki masalah yang sama. Jika Anda membuat aplikasi berbasis jendela "dari awal" seperti saya, Anda harus melakukan yang berikut: (perhatikan, ini adalah langkah-langkah untuk Xcode 4.2.)
0. Pastikan delegasi aplikasi Anda sesuai dengan protokol UIApplicationDelegate.
Sebagai contoh, misalkan delegasi kami disebut MyAppDelegate. Di MyAppDelegate.h, kita harus memiliki sesuatu seperti ini:
1. Tentukan delegasi aplikasi di main.m
Sebagai contoh,
2. Buat file antarmuka jendela utama.
Untuk melakukan ini, klik kanan pada proyek Anda dan pilih File Baru. Dari sana, pilih Window dari iOS -> bagian User Interface.
Setelah menambahkan file ke proyek Anda, pergi ke ringkasan proyek (klik kiri pada proyek; klik ringkasan.) Di bawah iPhone / iPod Deployment Info (dan bagian iPad yang sesuai jika Anda mau) dan pilih file antarmuka baru Anda di " Kotak kombo "" Antarmuka Utama.
3. Hubungkan semuanya di editor antarmuka
Pilih file antarmuka Anda dalam daftar file untuk memunculkan editor antarmuka.
Pastikan panel Utilities terbuka.
Tambahkan Objek baru dengan menyeret Objek dari daftar Objek di panel Utilitas ke ruang di atas di bawah objek Window Anda. Pilih objek. Klik pada inspektur Identitas di panel Utilities. Ubah Kelas menjadi delegasi aplikasi (MyAppDelegate, dalam contoh ini.)
Buka inspektur koneksi untuk MyAppDelegate. Hubungkan outlet jendela ke Window yang sudah ada di file antarmuka.
Klik pada Pemilik File di sebelah kiri, dan kemudian klik pada inspektur Identitas di panel Utilities. Ubah Kelas menjadi
UIApplication
Angkat inspektur koneksi untuk Pemilik File. Hubungkan outlet delegasi ke objek MyAppDelegate.
4. Terakhir, dan yang sangat penting, klik pada objek Window di file antarmuka. Buka inspektur Atribut. Pastikan "Visible at Launch" dicentang.
Hanya itu yang harus saya lakukan untuk membuatnya bekerja untuk saya. Semoga berhasil!
sumber
Jika Anda menggunakan MTStatusBarOverlay, maka Anda akan mendapatkan kesalahan ini.
MTStatusBarOverlay membuat jendela tambahan ([[UIApplication sharedApplication] windows) yang tidak memiliki pengendali root.
Ini sepertinya tidak menimbulkan masalah.
sumber
Menerima kesalahan yang sama setelah mengganti UI saya dengan Storyboard, menggunakan XCode 4.6.3 dan iOS 6.1
Memecahkannya dengan menghapus semua kode dari didFinishLaucnhingWithOptions di AppDelegate
sumber
OrdoDei memberikan jawaban yang benar dan berharga. Saya menambahkan jawaban ini hanya untuk memberikan contoh
didFinishLaunchingWithOptions
metode yang menggunakan jawabannya serta memperhitungkan komentar orang lain mengenai Navigasi Kontroler.sumber
Ini terjadi pada saya karena saya secara tidak sengaja berkomentar:
dari
sumber
Saya dapat mengatur pengontrol tampilan awal pada layar ringkasan xcode.
Klik pada nama proyek paling atas di explorer file sebelah kiri (seharusnya memiliki ikon cetak biru kecil). Di kolom tengah klik pada nama proyek Anda di bawah 'TARGETS', (itu harus memiliki ikon 'A' pensil kecil di sebelahnya). Cari di bawah 'Info Penerapan iPhone / iPod' dan cari 'Antarmuka Utama'. Anda harus dapat memilih opsi dari drop down.
sumber
Di atas jawaban "sho", itu benar (parameter keempat UIApplicationMain harus nama pengendali utama), saya menambahkan beberapa komentar.
Saya baru-baru ini mengubah 'model' aplikasi saya dari menggunakan MainWindow.xib untuk membangun jendela secara programatik. Aplikasi ini menggunakan templat yang lebih lama yang membuat MainWindow secara otomatis. Karena saya ingin mendukung tampilan pengontrol XIB yang berbeda untuk iPhone 5, lebih mudah untuk memilih XIB yang tepat secara programatis ketika Delegasi Aplikasi dibuat. Saya menghapus MainWindow.xib dari proyek juga.
Masalahnya adalah, saya lupa untuk mengisi parameter keempat di utama aplikasi UIA dan saya LUPA MEMINDAHKAN MainWindow dari "Antarmuka Utama" di Ringkasan Proyek.
Ini menyebabkan masalah besar: itu membuat peringatan yang tidak berbahaya "Aplikasi diharapkan untuk ..." pada perangkat pengembangan, tetapi ketika pergi ke App Store, itu pecah pada ponsel konsumen, mogok karena MainWindow tidak lagi ada dalam bundel! Saya harus meminta ulasan yang dipercepat untuk perbaikan bug.
Gejala lain adalah bahwa kadang-kadang blok putih, seperti UIView kosong, kadang-kadang muncul ketika Pengaturan diubah dan aplikasi diletakkan di latar depan. Di iPhone 5 jelas bahwa itu adalah blok 320x480. Mungkin MainWindow yang hilang sedang dibuat dalam mode pengembangan, menggunakan ukuran lama. Saya baru saja menemukan bug ini ketika laporan pertama crash mencapai kotak masuk.
Menginstal aplikasi dari App Store bukannya dari XCode menunjukkan bahwa aplikasi tersebut benar-benar macet, dan masalah MainWindow muncul dengan sendirinya di log, jadi saya bisa melihat bahwa itu bukan kombinasi khusus perangkat + versi iOS.
sumber
Untuk menambah jawaban Mike Flynn, sejak meningkatkan ke Xcode 7 dan menjalankan aplikasi saya di perangkat iOS 9, saya menambahkan ini ke
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
sumber
Masalah ini terjadi ketika Anda tidak memasang Interface Builder dengan benar.
Pastikan jendela App Delegate Anda dan outlet viewController terhubung:
Di MainWindow.xib Anda, tahan kontrol, klik App Delegate dan seret ke objek Window. Pilih jendela. Tahan kontrol dan pilih delegasi App lagi, seret ke controller tampilan root Anda dan pilih viewController.
sumber
Kesalahan ini juga muncul ketika pemilik file MainWindow.xib diatur secara tidak benar.
Pemilik file adalah
aplikasi UIA -> objek yang dimasukkan dari kelas delegasi aplikasi dengan outlet jendela yang terhubung ke jendela
sumber