ios Xcode: "La scena è irraggiungibile a causa della mancanza di punti di ingresso" ma non riesce a trovarla




storyboard warnings (18)

Puoi semplicemente impostare un identificatore. Nell'ispettore degli attributi nel riquadro di destra, troverai un campo chiamato "Identificatore". Basta mettere qualsiasi stringa lì, questo dovrebbe funzionare

È possibile fare clic sul controller di navigazione e sotto l'ispettore attributi fare clic sul pulsante "è il controller di visualizzazione iniziale", e questo dovrebbe funzionare anche.

Xcode 4.5.2 mi dà il seguente avviso:

Unsupported Configuration    
Scene is unreachable due to lack of entry points and does not have an identifier 
for runtime access via -instantiateViewControllerWithIdentifier:.

Sfortunatamente non riesco a identificare la scena incriminata. La selezione dell'avviso nel Navigatore problema non evidenzia alcun elemento nello Storyboard. Ho uno storyboard abbastanza complicato (oltre 30 scene).

Eventuali suggerimenti?


Answer #1

Nello storyboard, seleziona ciascuno dei controller di visualizzazione (freccia rossa nell'immagine in basso) e guarda il campo ID Storyboard (ovale rosso). Nessuno dei campi ID storyboard dovrebbe essere vuoto. Quando trovi quello che è, questo è il colpevole.


Answer #2

Con Xcode 7 questo può essere gestito facilmente. Non è necessario scorrere manualmente tutte le scene per trovarne uno problematico. Per prima cosa vai al navigatore dei rapporti , dove puoi ottenere maggiori informazioni sui problemi noti. La descrizione del problema può essere simile a questa:

Base.lproj / Main.storyboard: fPh-fe-F5F : avviso: la scena è irraggiungibile a causa della mancanza di punti di ingresso e non ha un identificatore per l'accesso in runtime tramite -instantiateViewControllerWithIdentifier :.

Con questa informazione, è possibile copiare l'ID oggetto, in questo caso era fPh-fe-F5F , e cercare l'area di lavoro per il verificarsi di questa stringa. La stringa sarà trovata nel file Main.storyboard. Fare doppio clic sul risultato della ricerca e verrà aperto Main.storyboard con scena selezionata. Una volta che conosci una scena problematica, puoi facilmente risolvere il problema, impostando l'ID dello storyboard o impostando "Is Initial View Controller"


Answer #3

Il modo più semplice per trovare la scena incriminata:

Vai al navigatore del problema (nel pannello di sinistra, vicino al pulsante di ricerca) e fai doppio clic sull'errore. Verrà visualizzata una finestra contenente la scena in questione centrata al centro della finestra.

(In realtà è generalmente vero: fare doppio clic su qualsiasi errore genererà in genere un popup contenente l'errore centrato - un piccolo trucchetto!)

Nota a margine: a volte, XCode restituirà questo errore in modo non corretto per una scena che è il controller di visualizzazione radice di un controller di navigazione (ovvero il controller di visualizzazione iniziale). La semplice correzione sta dando a questo controller di vista radice un ID Storyboard, la compilazione (l'errore dovrebbe andare via), e quindi la rimozione dello storyboardID (nessun errore più).


Answer #4

Per me, non era a causa di un Storyboard ID o di un Segue . Stavo ricevendo questo avviso perché non avevo impostato la View Controller's Custom Class del View Controller's Custom Class .

Seleziona il View Controller sullo Storyboard , quindi nel Utilities Pane , seleziona l'icona Identity Inspector . In Custom Class , controlla quale valore si trova all'interno del campo Class .

Se dice semplicemente UIViewController , allora devi digitare il nome della classe. Questo sarà il nome dei .h e .m che costituiscono la sottoclasse UIViewController personalizzata.


Answer #5

Ho avuto lo stesso problema, ma mi sono reso conto che stavo usando la vista del contenitore e invece di cancellare il controller di visualizzazione di default ho cancellato il suo follow.So il controller di visualizzazione è rimasto nello storyboard e lo era anche l'avvertimento. Quindi questo è uno dei casi in cui compare l'avviso se il controller di visualizzazione predefinito della vista contenitore non viene cancellato correttamente quando non ne hai bisogno.


Answer #6

Ho avuto lo stesso errore: per me l'errore era che non avevo avviato un controller di visualizzazione nella mia story board.

Correzione che ha rimosso quell'avvertimento.


Answer #7

Semplicemente dando a tutti gli MVC un id dello storyboard ha funzionato per me.


Answer #8

Ho ricevuto questo avviso quando ho un UIViewController in Storyboard a cui non è impostato nulla. Ho evitato questo avvertimento impostando l'ID di Storyboard su di esso.


Answer #9

Temo che dovrai passare tutti e 30 di questi e controllare se hanno un ID Storyboard o un seguito per quel controller di visualizzazione. Uno dei due è richiesto, entrambi sono anche un'opzione.


Answer #10

ho affrontato lo stesso problema e ho risolto con l'inserimento dell'ID storyboard qualsiasi identificatore per tutti i viewController e NavigationController; l'errore verrà rimosso immediatamente

godere!!!


Answer #11

Non è necessario impostare l' Storyboard ID per tutte le scene o UINavigationController

Bene, ho circa 50-60 scene e ho appena ricevuto queste avvertenze in modo che mi renda conto che solo il controller (Scene) o il NavigationController che non è connesso a seguito deve impostare l' Storyboard ID .

Si può vedere che nell'immagine sopra UINavigationController non è collegato a seguito, è stato un colpevole di tale avvertimento.

Basta dare un ID Storyboard per rimuovere questo avviso.


Answer #12

Ecco cosa ha funzionato per me:

  1. Apri lo storyboard in un editor di testo.
  2. Cambia versione da 3.0 a 2.0 e salvalo e chiudilo.
  3. Aprilo di nuovo in Visual Studio. Converte e apre automaticamente il documento.

Answer #13

Sono venuto a questa domanda oggi. Sto usando Xcode 6.3 e la risposta alla domanda dell'OP è abbastanza semplice ora:

Seleziona il controller di visualizzazione che desideri sia il primo, mostra l'ispettore degli attributi e, nella sezione Controller di visualizzazione, assicurati

È il controller di visualizzazione iniziale

è controllato Ecco!


Answer #14

Ho avuto lo stesso problema. Ho molte viste sul mio storyboard con un controller nav e tab-bar. Per me è stato solo un avvertimento per farti sapere che alcune delle viste non sono collegate. Assicurati che tutte le tue viste siano collegate in qualche modo al controller della vista radice . Stavo iniziando questo progetto da zero per eliminare questo avviso e ho notato lo stesso avvertimento quando una vista non era collegata.


Answer #15

Mentre questa discussione è vecchia, non ho visto una risposta che descriva cosa ha funzionato per me, quindi ecco qui ...

Ho avuto questo errore e l'esame visivo dello storyboard ha mostrato che tutti i controller di visualizzazione sembravano essere collegati al controller di visualizzazione radice.

Ho provato a nominare tutti i 17 controller della vista nello storyboard (come nella risposta di @ bobnoble). Ho usato una convenzione di denominazione basata sul nome lungo del controller della vista, ad esempio "jvc" per "Jobs View Controller". Quando ho provato a creare, ho ricevuto un messaggio di errore che indicava che uno dei controller della vista aveva un nome duplicato. Tracciando le cose, ho scoperto che avevo un duplicato reale di un controller di visualizzazione impilato esattamente sopra al suo gemello. Ho il sospetto che sia stato un danno da copia e incolla da un esperimento dell'interfaccia utente che non ho fatto il backup completo.

Ad ogni modo, cancellare il gemello non connesso ha risolto il mio problema. Dopodiché, ho rimosso tutti i nomi VC perché non sono referenziati nel codice.


Answer #16

Forse questa XQuery ti aiuterà a trovare quelle scene cattive

for $i in .//scene/objects/*[1][not(@storyboardIdentifier) or @storyboardIdentifier= '']/@id      (: find every scene that has an empty storyboardIdentifier :)
where count(.//segue[@destination= $i])= 0 and $i!= ./document/@initialViewController             (: filter the results to the scenes that are not destinations of a segue and exclude the initialViewController :) 
return ($i, $i/../@customClass)                                                                   (: return the storyboard-id and the customClass, if any :)

Se hai installato xqilla, dovresti salvare la query su un file e usarla come

xqilla <xqueryfile> -i <path to your storyboard>

Answer #17

Ho appena avuto questo errore esatto con un semplice Storyboard a scena singola, e tutto ciò che dovevo fare per sistemarlo era spuntare la casella di controllo "Is Initial View Controller" per il controller 1 view nello Storyboard. Sospetto che Xcode abbia usato questa casella per spuntarla di default in questa situazione, ma non lo fa più.

Seleziona la casella esattamente per uno dei controller di visualizzazione nello storyboard e dovresti essere bravo.





warnings