Saya mengalami masalah ini ketika saya mensimulasikan aplikasi saya, ini bukan kesalahan atau peringatan tetapi muncul di konsol saya, apakah ada yang pernah mengalami ini sebelumnya?
iphone
ios
transition
C. Yohanes
sumber
sumber
Jawaban:
Dalam kasus saya, kesalahan ini terjadi ketika Anda mengklik dua tab dalam tampilan tabel dengan sangat cepat.
Hasilnya menyebabkan nama judul salah, tombol kembali menghilang. Seseorang menyebutkan bahwa ketika Anda mendorong pandangan
set animated:NO
,. Kesalahan akan hilang tetapi masih menyebabkan beberapa perilaku aneh. Ini mendorong dua tampilan, lalu Anda harus mundur dua kali untuk kembali ke layar tampilan tabel.Metode yang saya coba untuk menyelesaikan masalah ini:
Menambahkan
BOOL cellSelected;
di
viewWillAppear
cellSelected = YES;
dalam delegasi didselectcell
if (cellSelected){cellSelected = NO; do action ; }
Ini membantu mencegah mengklik dua sel berbeda dengan sangat cepat.
sumber
Dalam kasus saya itu terjadi ketika saya dipicu
[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
dalam metodeUINavigationController
itemviewDidLoad
.Memindahkannya ke dalam
viewDidAppear
metode memecahkan masalah.Alasannya sangat mungkin adalah bahwa
viewDidLoad
tidak semua animasi mewah sudah selesai, sedangkanviewDidAppear
semuanya sudah selesai.sumber
Saya punya masalah ini juga. Saya menemukan dua solusi untuk masalah ini:
UINavigationController
tempat masalah ini teratasi. Pengontrol Navigasi Bufferedsumber
Anda harus menjalankan kode Anda di loop yang berbeda untuk menghindari ini
sumber
dispatch_async
antrian utama. Hal tentangdispatch_async
itu menunggu sampai semua animasi lain di antrian utama selesai. itu jauh lebih baik daripada menggunakan penundaan karena: 1- Anda tidak akan pernah tahu apakah penundaan sudah cukup, itu tergantung pada perangkat host Anda 2- Anda akan berakhir dengan penundaan berlebihan dan sesuatu akan tertinggal. coba ini:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
Saya punya banyak masalah dengan masalah yang sama. Saya menyelesaikan ini dengan cara ini
1) Anda tidak menggunakan
UIViewController's
penginisialisasi yang ditunjukinitWithNibName:bundle:
. Coba gunakan, bukan hanyainit
.2) diatur
animated:YES
ke TIDAK, dan itu memecahkan masalah. misalnya.[self.navigationController pushViewController: viewController_Obj animated:NO];
sumber
Saya memiliki masalah yang sama menggunakan pengontrol navigasi dan mendorong pengontrol lain ke sana. Saya mencoba menggunakan Buffered Navigation Controller dan beberapa pendekatan lainnya, tetapi tidak berhasil untuk saya. Setelah menghabiskan beberapa waktu untuk mengetahuinya, saya perhatikan bahwa masalah ini terjadi jika Anda mencoba mendorong pengontrol tampilan baru saat transaksi sebelumnya (animasi) sedang berlangsung (kira-kira durasi 0,5 detik). Bagaimanapun, saya membuat solusi cepat dengan mendelegasikan pengontrol navigasi dan menunggu animasi sebelumnya selesai.
sumber
Pastikan Anda tidak lupa di -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear untuk memanggil metode super yang tepat dalam kelebihan metode Anda. Misalnya dalam kasus saya, saya tidak cocok dengan nama metode seperti ini:
perhatikan bahwa metode muncul dan menghilang tidak cocok
sumber
super.viewWillAppear()
dalamviewDidDisappear()
.'Panggilan tidak seimbang untuk memulai / mengakhiri transisi tampilan'
Mengatakan animasi dimulai sebelum animasi terkait terakhir tidak selesai. Jadi, apakah Anda memunculkan pengontrol tampilan sebelum mendorong yang baru? Atau mungkin muncul ke root? jika ya coba lakukan tanpa animasi yaitu
[self.navigationController popToRootViewControllerAnimated:NO];
Dan lihat apakah ini menyelesaikan masalah, Dalam kasus saya ini berhasil.
sumber
Saya mendapat masalah ini karena saya memanggil UIPrintInteractionController dari viewController tanpa UITabbar, dan juga UINavigationBar. Tampaknya UIPrintInteractionController tidak mendapatkan printInteractionControllerParentViewController yang benar. Menerapkan metode dalam delegasi dan mengembalikan rootViewController saat ini berhasil untuk saya.
sumber
Saya memiliki masalah serupa yang melibatkan memutar ulang dialog modal. Posting solusinya di sini ...
https://stackoverflow.com/a/38795258/324479
[Masalah]
Nav Controller -> VC1 -Push -> VC2 -PopOver atau Modal Segue -> VC3.
VC3 melepas kembali ke VC1.
Ketika Segue dari VC2 ke VC3 adalah PopOver dan Modal, pelepasan berakhir dengan peringatan: Panggilan tidak seimbang untuk memulai / mengakhiri transisi tampilan untuk UIViewController "
Jika Segue dari VC ke VC didorong, peringatan itu hilang.
[Larutan]
Akan lebih bagus jika logika santai akan menangani ini. Mungkin itu bug, mungkin tidak. Apa pun caranya, solusinya adalah menjadikan VC2 (Pengontrol yang memiliki munculan) sebagai target mundur, lalu tunggu hingga selesai muncul sebelum memunculkan pengontrol nav. Itu memastikan animasi mundur (popup terbalik) memiliki cukup waktu untuk menyelesaikan sebelum bergerak mundur lebih jauh. Bahkan dengan animasi mati, itu masih harus menunggu atau Anda mendapatkan kesalahan.
Kode Anda untuk VC2 harus sebagai berikut. (Cepat)
sumber
Situasi ini dapat terjadi jika Anda menambahkan tampilan dengan pengontrol tampilan modal sebagai tampilan sub. Terbaik untuk digunakan:
Ini pada dasarnya mengatakan bahwa siklus hidup tampilan tidak efisien untuk viewControllers yang Anda coba tampilkan kemudian.
sumber
Saya memiliki masalah serupa saat mencoba melakukan:
dalam fungsi seperti
- (void) popUpToLevelTwo;
, dan untuk meletakkanreturn;
di akhir fungsi memecahkan masalahsumber
Saya juga mendapatkan ini di
Saya mengubah
YES
ke aNO
, dan itu menyelesaikan masalah.sumber
saya memiliki masalah yang sama ketika saya menggunakan metode pop navigationcontroller Dalam aplikasi saya, saya menggunakan logika terpisah untuk pengontrol navigasi, Jadi hindari penggunaan bilah navigasi dan selalu tersembunyi. Kemudian saya menggunakan tampilan dan pemberitahuan khusus untuk menangani tombol belakang dan kejadiannya. pengamat notifikasi terdaftar dan dan tidak dihapus. Jadi, notifikasi terpicu dua kali, dan itu menciptakan kesalahan yang disebutkan di atas. Periksa kode Anda secara menyeluruh untuk mengetahui kesalahan seperti itu
sumber
Untuk apa nilainya, saya mendapatkan kesalahan yang sama ini ketika tidak menyertakan panggilan ke
[super viewDidLoad:animated]
dalamviewDidLoad
penggantian saya .sumber
Saya juga mengalami masalah ini ketika saya mengetuk tombol dari NIB. Ternyata saya tidak sengaja menghubungkan tombol untuk mengirim acara ke dua metode IBAction, yang masing-masing melakukan pushViewController: animated:
sumber
Saya memiliki beberapa logika yang diimplementasikan untuk menunggu mendorong
UIViewController
hingga semua data diunduh. Terjadi kesalahan dalam logika ini yang menyebabkan mendorongUIViewController
terlalu awal sementara masih ada panggilan API lain yang sedang berlangsung.Itu menyebabkan hal yang sama
UIViewController
didorong dua kali olehUINavigationController
dan memberikan peringatan ini.sumber
Alasan Untuk pesan: Pesan ini bisa ditampilkan jika dan hanya jika Anda mendorong / menyajikan View controller lain dari
viewWillAppear
,loadView
,init
atauviewDidLoad
metode arus View ControllerCara untuk Menghapus Pesan kesalahan: Pindahkan kode mendorong / presentasi Anda ke
viewDidAppear
metode akan menyelesaikan masalahsumber
Cepat 4
Masalah saya adalah bahwa saya mempresentasikan VC lain sebelum VC saya yang sekarang selesai dirender.
Solusinya adalah menyajikan VC saya berikutnya setelah penundaan yang cepat.
APA YANG HARUS ANDA JANGAN LAKUKAN
APA YANG HARUS ANDA LAKUKAN
sumber
Saya mengalami masalah ini ketika saya lupa mengatur Break; setelah mendorong tampilan dalam pernyataan switch!
Seperti di sini:
sumber
alasan di balik kesalahan "Panggilan tidak seimbang untuk memulai / mengakhiri transisi tampilan" adalah saat Anda menavigasi | segue dua kali pada saat bersamaan
sumber
salah satu solusinya adalah,
sumber
Anda dapat mengalami ini jika Anda mencoba menutup UIViewController sebelum selesai memuat.
Saya memiliki pesan ini di konsol dan berfokus sepenuhnya pada UIViewController yang menghadirkan UIViewController baru, tanpa hasil. Saya akhirnya menemukan masalahnya ada di UIViewController yang saya tunjukkan sedang ditutup sendiri karena pengguna tidak masuk ke akun mereka.
Semoga ini bisa membantu seseorang.
sumber
Ini adalah hal yang sulit bagi saya: Saya telah menimpa
tanpa menimpa:
di pengontrol navigasi akar jendela saya. kemudian pengontrol navigasi anak mengeluh saat mendorong pengontrol tampilan lain dengan peringatan yang disebutkan di atas. Peringatan itu bukan yang terburuk, masalah besarnya adalah, bahwa di sana delegasi pengontrol navigasi anak tidak dipanggil lagi. lelah.
sumber
Dalam kasus saya, saya mengambil
NSData
dariNSURL
dalamviewDidLoad
metode.sumber