iOS 7 - Varsayılan görünüm denetleyicisini örnekleyememe


94

Xcode 5'i yeni oluşturulmuş bir uygulamada kullanıyorum ve onu yeni oluşturduğumda çalıştır düğmesine gidiyorum e üzerine tıklıyorum, sonra proje inşa ediliyor ancak iOS Simülatöründe görünmüyor ve aşağıdaki mesajı alıyorum:

 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - 
 perhaps the designated entry point is not set?

Elbette Google'da araştırdım ve herkes bunun gerçekleştiğine işaret ediyor çünkü XCode henüz hangi görünüm denetleyicisinin ilk denetleyici olduğunu bilmiyor. Ancak garip olan şey, uygulamayı bir sayfa tabanlı (ayrıca tek görünüm ve sekmeli uygulama seçeneklerini denedim) uygulama olarak oluşturmam ve XCode'un bunun için bir Storyboard tanımlamış olması.

Ayrıca, projenin ana arayüz seçeneğine gittiğimde film şeridi (Xcode'un kendisi tarafından "Ana" olarak adlandırılır) ayarlanır ve Öykü Panosunda, görünüm denetleyicim "İlk Görünüm Denetleyicisi" olarak ayarlanır.

görüntü açıklamasını buraya girin

Yanlış olan ne?


programlı olarak ayarlamaya çalışın ...
Shamsudheen TK

@Ramshad Merhaba, iOS geliştirme konusunda biraz acemiyim. Bunu nasıl yapabilirim?
rodrigoalvesvieira


2
Görünüm denetleyicisini ilk görünüm denetleyicisi olacak şekilde ayarladığınızdan emin olun.
Sandeep

Kashif Ahmed'in belirttiği gibi, Info.plist dosyanızı kaynak kodu olarak açmanız ve <key> UISceneStoryboardFile </key> dizesini düzenlemeniz ve oraya yeni film şeridinizin adını vermeniz gerekir.
bogdan

Yanıtlar:


56

Bu benim de başıma geldi. 50 kez kontrol ettim ve "Is Initial View Controller" kontrol edildi, inanın bana. Birdenbire oldu. Peki bunu nasıl düzelttim?

  1. Projenizde yeni bir Storyboard oluşturun, buna Main_iPhoneV2 (veya orijinal storyboard stilinize bağlı olarak iPadV2) gibi bir ad verin
  2. Bozuk film şeridini açın, beyaz alanda herhangi bir yere tıklayın ve command-a'ya, ardından command-c'ye basın (tümünü seç ve kopyala)
  3. Yeni film şeridinizi açın ve aynı kurulumu tam olarak yapıştırmak için command-v'ye basın
  4. Proje ayarlarınıza gidin, "Ana Arayüz" nüzü yeni Main_iPhoneV2 ile değiştirin (iPad'inizse ve evrensel bir uygulama yazıyorsanız, -Info.plist'i düzenlemeniz ve "Ana film şeridi dosyası" değerini aramanız gerekir. temel ad (iPad)
  5. Yeniden derleyin ve saçınızı çekmeyi bırakın

3
Geliştirici Temelleri'nde listelenen adımları denerken aynı sorunla karşılaştı. Yeni bir Storyboard oluşturdu, yenisini ilk görünüm denetleyicisi olarak işaretledi ve yenisini Projeler Dağıtım Bilgileri aracılığıyla Ana hikaye panosu olarak belirledi. Sihirli bir şekilde çalışmaya başladı. Xcode ile ilgili bir hata olup olmadığından emin değilim. developer.apple.com/library/ios/referencelibrary/GettingStarted/…
ioWint

Bu işe yaramadı veya ilk gezinti denetleyicisi "Inital View Controller" olarak ayarlanmadıkça çalışmayacağına inanıyorum.
Sumit Kumar Saha

Bunu deneyecektim. Ama sonra temizledim ve tekrar inşa ettim ve işe yaradı
Skywalker

306

Kontrol Başlangıç View Controller mi Müfettiş Özellikleri içinde.

görüntü açıklamasını buraya girin


Elbette bu, 'çalışması gereken yol'. Ama ben de 'böcek' ile karşılaştım ve sonra bu işe yaramıyor. Yeni bir tane oluşturmak ve tüm eşyalarınızı kopyalamak işe yaradı! benim durumumda.
TYS

Ancak görüntüleme denetleyicisi zaten İlk Görünüm Denetleyicisi olarak ayarlanmış, değil mi?
Iurii Vasylenko

@YuraVasylenko: Daha önce değildi, bu yüzden seçildiğini işaretleyerek belirtmiştim.
Ashvin Ajadiya

1
Sadece ihtiyacı olanlar için biraz daha ayrıntılı hale getirmek için, Bir Storyboard için İlk Denetleyiciyi Ayarlama
Sergei Basharov

41

Önce sağ taraftaki Yardımcı Programlar çubuğundaki Denetleyiciyi Görüntüle'ye tıklayın . Ardından, Nitelikler Denetçisini seçin ve Görünüm Denetleyici bölümünde 'İlk Görünüm Denetleyicisidir' onay kutusunun işaretlendiğinden emin olun !


1
Bu benim sorunumdu. Film şeridimin sahip olduğu varsayılan görünüm denetleyicisini sildim ve başka bir tane eklediğimde bunu kontrol etmem gerekti.
Orgmir

18

Bu uyarı, aşağıdaki gibi bir kodunuz varsa da bildirilir:

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = myAwesomeRootViewController
    window?.makeKeyAndVisible()

Bu durumda, Main Interfaceuygulamanız için bir storyboard girişine ihtiyacınız olmadığından, hedef ayarların ilk sayfasına gidin ve boş olarak ayarlayın .


14

Arayüz Oluşturucuyu Kullanma:

' İlk görünüm denetleyicisi'nin ayarlanıp ayarlanmadığını kontrol edin . Aşağıdaki adımları kullanarak ayarlayabilirsiniz:

  1. Görünüm denetleyicinizi seçin (başlangıç ​​ekranı olarak görünecektir).
  2. Seç Özellik denetçisi gelen Kamu penceresinin.
  3. Görüntü Denetleyici bölümünden ' İlk Görünüm Denetleyicisidir ' seçeneğini seçin (değilse).

Bu adımı gerçekleştirdiyseniz ve hala hata alıyorsanız uncheck and do it again.

Sorunu çözmek için adımlar

Programlı olarak kullanma:

Amaç-C:

        self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id>

        self.window.rootViewController = viewController;
        [self.window makeKeyAndVisible];

        return YES;

Swift:

        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController

        self.window?.rootViewController = objMainViewController

        self.window?.makeKeyAndVisible()

        return true

3
Bunu programlı olarak yaparsanız, film şeridinizi hedefinizin Ana Arayüzünden kaldırdığınızdan emin olun - boş bırakın. Ayrıca bu içeri girmeli didFinishLaunchingWithOptions.
Jordan H

@JordanH Storyboard'u Hedef Ana Arayüzden nasıl kaldırabilirim?
PascalS

@Passe Metni seçin ve sil düğmesine basın, bu Genel sekmesinde
Jordan H

12

Bunu, Simülatörde siyah bir ekranla birlikte görünmeyen Sekme Çubuğu Denetleyicimle deneyimledim. Uygulamamın Simulator'da görünmesi için aşağıdakileri yaptım.

  1. Main.storyboard'a gidin.
  2. Is Initial View ControllerNitelikler denetçisi sekmesinin altındaki kontrol edin .

Öznitelik Denetçisindeki İlk Görünüm Denetleyicisidir.

Bu görünüm denetleyicisini yanlışlıkla sildiyseniz veya başka bir şekilde varsayılan yapmadıysanız, "UIMainStoryboardFile 'Main' için varsayılan görünüm denetleyicisi başlatılamadı - belki de belirlenen giriş noktası ayarlanmamıştır?" Hatasını görürsünüz. düz siyah bir ekranla birlikte uygulamanız başladığında.

Sorunu çözmek için Main.storyboard dosyanızı açın ve uygulamanız ilk çalıştığında gösterilmesini istediğiniz görünüm denetleyicisini bulun. Seçildiğinde, nitelik denetçisine gidin ve "İlk Görünüm Denetleyicisidir" işaretli kutuyu işaretleyin. Bu görünüm denetleyicisinin solunda, bunun film şeridinizin giriş noktası olduğunu gösteren sağa bakan bir ok görmelisiniz.


10

Pencereyi manuel olarak ayarlayın,

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if (!application.keyWindow.rootViewController) 
     {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *myViewController= [storyboard instantiateViewControllerWithIdentifier:@"myViewController identifier"];

         application.keyWindow.rootViewController = myViewController;
     }
}

Bu, film şeridindeki ilk görüntü denetleyicisinin işaretini kaldırmayı gerektirir mi?
bdv

7

Film şeridi dosya adını " Main.storyboard " TO: " XXX.storyboard " olarak değiştirdiğimde bu hatayı alıyorum

Benim için çözüm şuydu:

  • Ürün-> Temiz
  • DEĞİŞTİR: Desteklenen Dosyaları -> info.plist -> Ana film şeridi dosya temel adı -> Ana ALICI: XXX

İyi şanslar



3

görüntü açıklamasını buraya girin

Yukarıdaki doğru cevabın yanı sıra, Genel olarak doğru Ana Arayüzü ayarladığınızdan da emin olun.


3

1. seçenek

Varsayılan bir görünüm denetleyicisi yerine özel film şeridinizi ayarlamak istiyorsanız.

Bu özniteliği info.plist dosyasından değiştirin

<key>UISceneStoryboardFile</key> <string>Onboarding</string>

İlk katılım , film şeridi adınız olacaktır

info.plist dosyasına sağ tıklayın ve kaynak kodu olarak açmak için

2. seçenek

1- Projenize tıklayın

2- Hedef bölümden projenizi seçin

3- Dağıtım arayüzü bölümüne geçin

4- Film şeridi bölümünüzü Ana Arayüz alanından değiştirin

Lütfen film şeridi ilk görünüm denetleyicinizi ayarlamayı unutmayın


1
<key> UISceneStoryboardFile </key> şeyi benim için düzeltti. Teşekkürler.
bogdan

2

Yeni film şeridi eklediyseniz, aşağıdaki noktaları kontrol etmeniz gerekir.

1) Plist dosyanızda, Ana film şeridi dosyası temel adının (iPad) veya (iPhone) değerinin, film şeridi dosya adınızla eşleştirilmesi gerekir ( .storyboard uzantısını eklemeyin )

2) Film şeridinde, İlk görünüm denetleyicisi olarak ayarlanan bir görünüm denetleyicisi olmalıdır.

3) Projenizi temizleyin ve inşa edin. :)

görüntü açıklamasını buraya girin


1

Kodunuzu düzenli olarak kaynak kontrolüne tabi tutuyorsanız, bu sizi yeni bir Storyboard oluşturma zahmetinden kurtarabilir ve muhtemelen daha fazla sorun ortaya çıkarabilir ...

Bunu, bozuk olanla çalışan sürümün Git kaynak kodunu karşılaştırarak çözebildim. Fark , benim durumumda ilk satırın ilk görünüm denetleyicisinin kimliğini içermesi gerektiğini gösterdi, initialViewController = "Q7U-eo-vxw" . Kimliğin var olduğundan emin olmak için kaynak kodunu araştırdım. Tek yapmam gereken onu yerine koymaktı ve her şey tekrar çalıştı!

<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="Q7U-eo-vxw">
    <dependencies>
        <deployment defaultVersion="1296" identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
    </dependencies>
    <scenes>

Sorun gidermenize yardımcı olabilecek bazı adımlar şunlardır:

  1. Başarısız olan Öykü Panosunu sağ tıklayın ve son işlemden sonraki değişikliklerinizi korumak için Kaynak Kontrolü> Kaydet ... seçeneğini kullanın.
  2. Başarısız olan Öykü Panonuza sağ tıklamayı deneyin ve film şeridinin XML'sini görüntülemek için "Farklı Aç> Kaynak Kodu" nu kullanın.
  3. Gelen belge elemanı, "adlı özellik için bakmak initialViewController ". Eksikse endişelenmeyin, bunu düzeltiriz. Varsa, kendisine atanan kimliğe çift tıklayın, kopyalamak için command-c'ye, belgede daha derinlemesine aramak için command-f command-v'ye çift tıklayın. Bu, ilk görünümü sağlaması gereken denetleyicinin tanımlayıcısıdır. Belgede tanımlanmamışsa, o zaman bu bir sorundur - benim durumumda initialViewController = "Q7U-eo-vxw" durumunda onu belge etiketinden kaldırmalısınız .
  4. Görünüm adlı Xcode menü öğesine gidin ve Sürüm Düzenleyici> Karşılaştırma Görünümünü Göster'i seçin
  5. Bu, yerel versiyonunuzu solda ve geçmiş versiyonunu sağda gösterir. Bu hikaye panosu için işlemlerin bir listesini almak için tarihsel versiyonun altındaki tarihe tıklayın. Çalıştığını bildiğiniz birini seçin ve belge öğesini karşılaştırın . * İnitialViewController'ın kimliği nedir ? Farklı mı Öyleyse, elle düzenlemeyi ve koşmayı deneyin. xcode tarihsel karşılaştırma aracı iş başında

1

AppDelegate'te pencere var olup olmadığını kontrol edin.

var window: UIWindow? 

Ayrıca Info.plist dosyanızın film şeridini de kontrol edin.

<key>UIMainStoryboardFile</key>
<string>Main</string>

RootViewController'ın AppDelegate'de programlı olarak ayarlanması uyarıyı düzeltmeyecektir. Film şeridinin görünüm denetleyicisini ayarlamasına veya bunu programlı olarak yapmasına izin vermeyi seçmelisiniz.


1

Xcode 11 ve üzerinde oluşturulan projeler, sadece Ana Arayüz dosyasını proje ayarlarından değiştirmek yeterli olmayacaktır.

Info.plist dosyasını manuel olarak düzenlemeniz ve film şeridi adını da ayarlamanız gerekir UISceneStoryboardFile.


1

Yukarıdakilerin hiçbiri sorunu benim için çözmedi. Benim durumumda, aynı zamanda doğru uygulama sahnesi bildirimini de ayarlamıyordu.

LoginScreen'i değiştirmek zorunda kaldım eskiden Ana idi

görüntü açıklamasını buraya girin


Şaşırdım, bu kadar fazla oy alamadı. Bu, pratik olarak herhangi bir SceneDelegate uygulamasında (Storyboard'u ilk denetleyici olarak kullanmayan) gerçekleşir.
bauerMusic
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.