presentViewController: iOS <6'da kilitlenme (AutoLayout)


92

Bu, aldığım garip bir kaza. Belirli bir ViewController'a giden bir düğmeye bastığımda çökme oluyor. Çöktüğü satır:

DestinationInformationViewController *info = [[DestinationInformationViewController alloc] init];
[info setModalTransitionStyle: UIModalTransitionStyleCrossDissolve];
[self presentViewController:info animated:YES completion: nil]; // CRASHES HERE
[info release];

Kilitlenme izi:

*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *** First throw call stack: (0x3758288f 0x35287259 0x37582789 0x375827ab 0x3153d54d 0x3153d6bb 0x3153d423 0x314ce001 0x3143c3c7 0x31319c59 0x3128fc17 0x3129a267 0x3129a1d5 0x3133959b 0x31338367 0x84091 0x374dc3fd 0x31271e07 0x31271dc3 0x31271da1 0x31271b11 0x31272449 0x3127092b 0x31270319 0x31256695 0x31255f3b 0x33c9822b 0x37556523 0x375564c5 0x37555313 0x374d84a5 0x374d836d 0x33c97439 0x31284cd5 0x82bb3 0x71200) terminate called throwing an exception(gdb) Could not instantiate class named NSLayoutConstraint

NOT: Bu, iPhone 4 iOS 5.1 cihazımda çöküyor ancak iPhone 4S iOS 6 Beta 2 cihazımda çökmüyor


2
Aynı sorunu iphone 5.1'de çalışan ve uygulamayı Xcode 4.5'e yükselttikten sonra yaşadım
Huidobro

Evet, sanırım bunu tespit ettik :)
MCKapur

Yanıtlar:


201

Bunun Xcode'un yeni arayüz oluşturucusuyla ilgili bir sorun olduğuna inanıyorum. Xcode 4.5'in arayüz oluşturucusunu kullanarak .xib'inizi oluşturdunuz mu? Şu anda aynı problemle karşılaştım ve sanırım problem bu. Uygulamam iOS 6'da çalışıyor, ancak daha eski bir şey değil.

Ve xib'leriniz için kapattığınızdan emin Use Auto Layoutolmalısınız .

Bunu şu şekilde yapabilirsiniz:

  1. Xib'inizi açın.
  2. Git File Inspectorsekmesine.
  3. Interface Builder DocumentSağ araç çubuğunda bölümü bulun .
  4. Use Auto LayoutSeçeneğin işaretini kaldırın .

37
Evet, uçlarınız için "otomatik düzen kullan" ı kapattığınızdan emin olmalısınız.
Wevah

Evet, aynı sorun. Bununla ilgili ne yapmalı? Xcode 4.4 test etmelisiniz (Yani iOS 6 olmadığı halde ... Benim iPhone 4 iOS 5.1 Xcode 4.5 çalışabilen bazı garip nedenle nedeni, olabilir)
MCKapur

16
Xib'inizin ana görünümünde, sağ araç çubuğundaki Arayüz oluşturucu Belge bölümü.
Mark

İlgilenen herkes için, görünümünü programlı olarak ayarlayan eski bir görünüm denetleyicisi için Xcode 4.5'te bir uç dosyası oluşturdum. Kısa süre sonra yeni ucumun iOS 5'te çalışmayacağını anladım, bu yüzden uç dosyasını sildim ve benzer bir hata almaya başladım, hatta yeni uç dosyasının artık projemde olmadığını düşündüm! Çözüm, .h ve .m dosyalarını yeniden adlandırmaktı, ugh.
Keller

2
Bugünlerde Apple'da kalite kontrolüne ne olduğu konusunda biraz endişeliyim.
ardochhigh

43

ScreenShot

Yeni XCode güncellemesini ve IOS6 SDK'yı indirdiğimde de aynı sorunu yaşadım. İşte bunu nasıl çözdüm:

Hatanızın oluştuğu Arabirim oluşturucu dosyasını (xib veya film şeridi dosyası) seçin. XCode'da sağdaki yardımcı düzenleyicide, soldan ilk sekmeyi seçin ve yukarıdaki ekran görüntüsünde olduğu gibi "Otomatik Düzen Kullan" seçeneği için bir onay kutusu vardır. Onay kutusunun işaretini kaldırın.


4

Nagaraja soruyor "xib kullanmıyorsak aynı sorunu nasıl çözebilirim? Tam olarak bu sorunla karşılaştım. Bir xib ile bir denetleyici oluşturdum ve sonra xib dosyasını kaldırmaya karar verdim. Çökme ortadan kalkmadı. Sorun şuydu: uygulamaya ihtiyacım olan

- (void) loadView

benim denetleyici sınıfımda. Bu yöntemi uyguladıktan sonra sorun çözüldü.


1

PresentViewController ile bir çarpışmanın bir başka olası nedeni, uçta artık bulunmayan bir değişkene bağlı bir şeyin olmasıdır - değişkenin adı değiştirilmiş veya silinmiş.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.