Impossibile inserire una nuova connessione outlet: Impossibile trovare informazioni per la classe denominata


281

Ho ricevuto un errore su Xcode che diceva che non c'erano informazioni sul controller di visualizzazione.

Impossibile inserire una nuova connessione outlet: Impossibile trovare informazioni per la classe denominata

Perché sta succedendo?

Schermata 1


2
Penso che questo sia stato chiesto prima: stackoverflow.com/questions/17735182/…
Tapani,

Ho semplicemente lasciato Xcode, quindi l'ho riaperto. il compilatore ricaricherà tutti i file e sarà in grado di rilevare il file che stai cercando
Jane Chicken,

Verifica di non avere già una presa non collegata nel file del controller di visualizzazione. Ho scoperto di averlo fatto. Dopo averlo eliminato non ho avuto problemi.
Kex,

Per me nessuna delle soluzioni precedenti ha funzionato. Ho dovuto eliminare il controller di visualizzazione, che ho copiato e incollato di nuovo nel mio storyboard per riutilizzarlo. Quindi ho trascinato un nuovo controller di visualizzazione nello storyboard e tutto è andato bene :). Spero che possa aiutare qualcuno con lo stesso problema.
Arslan Saleem,

Questo è un ERRORE in XCode e non so perché non lo risolvano. Devi chiudere XCode e riaprire. Quando provi di nuovo a mettere gli sbocchi, ma questa volta lascia un gruppo di ENTER prima di farlo. Non devi eliminare nulla o perdere tempo con altre opzioni ... Questo risolverà i tuoi problemi.
mavesonzini,

Risposte:


692

Ecco alcune cose che possono risolvere questo problema (in ordine crescente di difficoltà):

  • Pulisci il progetto ( Prodotto> Pulisci )
  • Incolla manualmente

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }
    

    e controlla il trascinamento su di esso. (Cambia il tipo secondo necessità.) Vedi anche questo .

  • Chiudi completamente Xcode e riavvia il tuo progetto.

  • Elimina la cartella Dati derivati ​​(Vai a Xcode> Preferenze > Posizioni e fai clic sulla freccia grigia accanto alla cartella Dati derivati. Quindi elimina la cartella del tuo progetto.)
  • Fai clic su Elimina sulla classe, rimuovi riferimento (non Sposta nel cestino) e aggiungilo di nuovo. (vedi questa risposta )

non dimenticare di rimuovere la classe dal controller di visualizzazione in modo che questa procedura funzioni
reggie,

8
Nessuno di questi passaggi ha funzionato per me in Xcode 8.3.2. Ho dovuto "Mostra ispettore identità"> deselezionato il campo "Classe" (evidenziare il nome della classe personalizzata ed eliminare)> reinserire il nome della classe nel campo "Classe". Xcode ha completato automaticamente il nome della classe. Ho quindi premuto invio.
PeqNP,

Aggiungi la linea alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'al tuo ~ / .bashrc per usare il comando purgederiveddataper cancellare con un comando
eskimwier

Ho trovato un altro modo per risolvere questo problema, questo mi è successo quando ho cambiato alcune impostazioni di build per migliorare la mia velocità di build. stackoverflow.com/a/50555888/2952876
Mathias Van Houtte

Consiglio vivamente a tutti voi di provare la mia soluzione di seguito. Sarebbe sventrato nel sapere che le persone devono riavviare i loro computer per un bug che mostra frequentemente.
Stephen Paul

134

Oppure, se nessuna delle opzioni precedenti funziona, digita prima il nome dell'outlet nel file, @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!quindi fai clic e trascina dall'outlet nel pennino alla variabile appena creata a livello di programmazione. Dovrebbe funzionare senza il fastidio di pulire, costruire ed eliminare nulla.


4
spesso la soluzione più veloce invece di spendere anni per pulire, costruire, ecc. grazie.
Mohonish,

1
Molto bello e una volta fatto l'Automatico inizia a comparire, grazie.
AmJa,

1
Prima di tutto connetti il ​​tuo oggetto XIB agli IBoutlet, quindi prova a collegare i loro vincoli IBOutlet. senza questo mostrerà sempre un errore.
Chandramani,

Può anche fare la differenza quando si tenta di inserire il nuovo outlet. Per, la parte superiore della lista (dove c'è spazio libero sopra) ha funzionato; il centro della lista no.
Richard,

1
Questo dovrebbe essere contrassegnato come la migliore risposta. È più facile, più veloce e più affidabile. Inoltre funziona sempre! Ottimo lavoro e grazie @StephenPaul
denis_lor

51

Esegui solo i due passaggi seguenti per eliminare questo errore

  1. Progetto pulito usando Prodotto> pulito
  2. Esegui il progetto

Ora prova ad aggiungere l'azione o l'outlet. Questo è tutto.

Happy Coding


4
Strano ... questi due semplici passaggi hanno aiutato a risolvere il problema anche per me. Quindi consiglio di provare prima questi semplici passaggi :-)
codice incrociato

49

Nessuno dei suggerimenti nella risposta migliore ha funzionato per me. Stava impazzendo. Quindi ho notato che Assistant Editor era stato in qualche modo impostato su Manual ed ero sul ViewController.swift (Interface) invece che sul file ViewController.swift.

Modificato e risolto il problema. Un po 'imbarazzante ma ehi, stiamo tutti imparando.

inserisci qui la descrizione dell'immagine


1
Risposta salvavita! Nessuna delle altre risposte l'ha risolto una volta per sempre. Peccato che la descrizione dell'errore non dia il minimo suggerimento che potresti trovarti nel file wearg. Grazie. +1 per l'immagine ha reso tutto chiaro.
Pauloco,

Ho notato qualcosa di abbastanza simile, ma diverso: nel percorso in alto in cui viene visualizzato il nome della classe, c'era solo il nome della classe, ma mancava l'inizio del percorso come myProject> appName> controller e quindi la classe. Ho selezionato un altro corso poi di nuovo a quello problematico, e tutto OK
claude31

15

Ecco i passaggi risolti per me:

  1. Rimuovere il riferimento al nome della classe da Visualizza (storyboard / xib) e salvare;
  2. Aggiungi nuovamente il nome della classe e salva;
  3. Pulisci e costruisci;

Fatto !


10

Ho avuto lo stesso problema. Mi sono stancato sotto soluzioni ma non ha funzionato:

  1. Clean Project (cmd + shift + k) e persino Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data e Module Cache content

Di seguito la soluzione alternativa a questo problema:

  1. Passa al file del codice sorgente e scrivi IBOutlet / IBActionmanualmente (copia incolla preferito)

Schermata 1

  1. Quindi passare al file Storyboard e Apri Utilitesfinestra
  2. Vai a Connection Inspector
  3. Quindi collegare il IBOutlete IBActionscritto nel file di origine con Interface Builder.

Schermata 2


Il trascinamento di punti vendita / azioni non funzionava affatto, ma dopo averlo fatto manualmente in questo modo, tutto ha funzionato di nuovo correttamente.
Jason

Questo è un metodo alternativo standard per effettuare connessioni. Nel caso di azioni con pulsanti di opzione, l'unico modo, AFAIK. Nello storyboard, puoi anche fare clic con il pulsante destro del mouse sul controller, trovare la funzione ed effettuare la connessione.
brusco

8

Ho avuto lo stesso problema. Mi sono reso conto che l' Manualelemento X-Code è stato selezionato quando ho provato a creare un outlet mediante il controllo-trascinamento

inserisci qui la descrizione dell'immagine

Dopo averlo impostato su automatico ha funzionato

inserisci qui la descrizione dell'immagine


Ho avuto questo esatto problema. Non ho nemmeno notato la differenza.
Joshua Dance

Grande!!! Ho perso così tanto tempo per questo progetto di pulizia dei bug, il riavvio di xCode, l'eliminazione dei dati derivati, ma quella era l'unica soluzione che funzionava per me! Molte grazie!
Anton Eregin,

7

Ho risolto questo problema creando a livello di codice le etichette e i campi di testo, quindi trascinando i comandi dai piccoli cerchi vuoti a sinistra del codice ai componenti dello Storyboard. Per illustrare il mio punto: ho scritto @IBOutlet weak var HelloLabel: UILabel!e poi premuto Comando e trascinato il codice nel componente sullo storyboard.


Questa soluzione ha funzionato perfettamente per me! Oltre a quello @IBOutlet weak var myButton: UIButtonho usato lo stesso processo per impostare @IBAction func doSomething(_ sender: Any) { }e quindi ho collegato questa funzione a UIButton sul mio storyboard. Grazie per aver condiviso questo @KuboAndTwoStrings
Nii Mantse il

6
  1. Chiudi il progetto a cui stai lavorando.
  2. Elimina la cartella 【DerivedData】 del tuo progetto. (Questa cartella potrebbe trovarsi all'interno della cartella del tuo progetto, oppure all'interno
    ~/Library/Developer/Xcode/DerivedData/
    (del tuo progetto) /) o in qualche altro luogo che è stato impostato da te.
  3. riavvia il tuo progetto.

4

Ho trovato una soluzione più semplice dato che questo bug si trova su XCODE 9.

Passo uno vai al tuo viewcontroller e scrivi manualmente la proprietà che vuoi connettere come nell'esempio sotto, assicurati di usare il formato seguente.

@IBOutlet domande var deboliStackView: UIStackView!

Il secondo passaggio va allo storyboard e collega la vista o qualunque cosa tu stia provando a connetterti alla proprietà che hai creato nel passaggio 1.

Quanto sopra ti farà risparmiare tempo per rimuovere e pulire i dati derivati.


3

Ho ricevuto questo errore quando ho rinominato la classe. Quindi l'ho risolto semplicemente seguendo i passaggi seguenti

  • Nel menu Xcode -> Product->Clean
  • Restart l'Xcode

questa era l'unica soluzione che ha funzionato per me abbastanza divertente.
Joseph Astrahan,

2

Nel mio caso, bc, ho scelto un nuovo file UIViewController in IB e poi ho provato a trascinare il tasto Ctrl e trascinarlo su questo nuovo controller senza prima rimuovere le connessioni precedenti in Connections Inspector. Rimuovere prima quelli e riprovare.


2

Per me ha funzionato quando nella scheda a destra> Localizzazione, ho selezionato la casella di controllo inglese. Inizialmente è stata controllata solo la Base. Dopo ciò non ho più avuto problemi. Spero che questo ti aiuti!


2

inserisci qui la descrizione dell'immagine

Ho selezionato l' opzione Automatica per selezionare il file ViewController.swift. E poi riesco a prendere sbocchi.


2

Eseguire i due passaggi seguenti solo per eliminare questo errore.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Ora prova ad aggiungere / collegare le azioni o le prese.

Funzionando bene per me per molte volte.


1

È successo quando ho aggiunto un Swiftfile in un Objective-Cprogetto.
Quindi, in questa situazione, ciò che puoi fare è. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .

Per questo! Ho cercato di risolvere questo problema da solo per mezz'ora già lol. Tuttavia, problemi come questo negli Storyboard sono facili da risolvere. Grazie! Questo mi ha aiutato molto!
Glenn,

0

Soluzione più semplice: - Ho usato xCode 7 e iOS 9.

nel tuo .m

elimina #import "VC.h"

salva .m e collega di nuovo il tuo outlet funziona bene.


0

Ho usato xCode 7 e iOS 9.

nel tuo .m

Elimina #import "VC.h"

salva .m e collega di nuovo il tuo outlet funziona bene.

nel tuo .m

Inserisci #import "VC.h"

salva .m


0

Niente di tutto ciò ha funzionato per me, ma l'ho capito.

All'interno dello storyboard ho copiato il ViewController corrispondente negli appunti e l'ho eliminato, dopo averlo incollato di nuovo.

All'improvviso tutto tornò a funzionare come un incantesimo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.