2013-10-16 12 views
9

Ho aggiunto un file xib UIView utilizzando la classe radice di MyView.Classe sconosciuta **** nel file Interface Builder

L'ho creato nel posto sbagliato e quindi spostato nel progetto. Lo stesso progetto è solo una cartella/gruppo diversi.

Ho poi avuto un problema durante l'esecuzione dicendo ...

Unknown Class MyView in Interface Builder file

non riuscivo a capire cosa sbagliavo così ora ho cancellato i file sia dal progetto e dalla directory.

Ho eseguito una ricerca utilizzando SublimeText2 per la stringa "MyView" e non esiste in nessun punto del progetto.

Ho resettato il simulatore, ho pulito il progetto e la cartella di build e cancellato i dati derivati.

Sempre con lo stesso errore.

Qualche idea cosa posso fare ora?

+3

ha u controllare ur di file .m nelle fonti di compilazione ? – manujmv

+0

Assicurati di aver importato l'intestazione nel posto giusto. Prova ad aggiungere l'importazione altrove e controlla se funziona. Il proprietario dei file dovrebbe essere il posto. – uchuugaka

+0

Nessun file da importare. L'ho cancellato. Come posso controllare la fonte di compilazione? – Fogmeister

risposta

1

OK, quindi ho cancellato tutti i riferimenti alla classe causando il problema ma ancora nulla.

Tuttavia, ho anche una sottoclasse UIViewController denominata MyViewController. Questo non veniva caricato in nessun file IB, quindi non so come causasse il problema.

Ho cambiato il nome in MyOtherViewController.

Build - Run - works.

Non so come o perché, ma ora funziona.

3

appcode è molto ostinato nel mantenere il vecchio xib memorizzato in cache da qualche parte, e se si ha lo xib memorizzato nella cache e ha lo stesso nome del controller che proverà a caricarlo all'avvio.

quello che faccio dopo l'eliminazione di un .xib:

  1. applicazione di eliminazione dal dispositivo
  2. cartella generazione pulita nel codice dell'app
  3. cache invalidare e riavvio, uccidere appcode prima del suo inizio
  4. cancellare dati derivati ​​in xcode
  5. start codice app

passaggio 4 non dovrebbe essere necessario, ma la mia sensazione è che senza di esso sto ancora vedendo il cancellato .xib

1

Ho avuto lo stesso problema quando avevo più dichiarazioni di classe in un unico file. Quello che ho fatto è che ho dichiarato una sottoclasse UITableViewCell in uno dei miei controller di visualizzazione, e ho dimenticato di mettere la sottoclasse UITableViewCell '@implementation nel file .m del controller di visualizzazione.

20

volte IBuilder mancato customModule="AppName" customModuleProvider="target"

Per risolvere il problema, storyboard aperto come codice sorgente e sostituire questa linea:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" 
sceneMemberID="viewController"> 

a questo:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" 
customModule="AppName" customModuleProvider="target" sceneMemberID="viewController"> 
+1

Tutte le altre correzioni non hanno funzionato per me, ma così è stato. CustomModuleProvider mancava per me. Wow, questo è stato fastidioso Questo mi spinge ancora più vicino a costruire tutte le mie interfacce in modo programmatico. – dmastylo

+0

Grazie amico :) –

+0

Grazie, questo lo ha risolto anche per me !!!! Dopo ore di provare altre cose .... smh – Jan

2

Se si dispone di più bersagli nel tuo progetto Xcode, assicurati che la classe menzionata nel file di errore sia compilata per il target che stai cercando e test con pure.

+0

Sì, esattamente, ho provato come una soluzione di miliardi, ma questo è l'unico che ha funzionato. Non avevo il target build "barrato" nella classe stessa. Grazie Signore! – Markus

9

Vai a Visualizza -> Utilità Goto File ispettore di file di .m

Aprire la sezione di destinazione iscrizione e assicurarsi che il vostro obiettivo è selezionato per questo .m file

0

Come la mia esperienza, tutto le soluzioni di cui sopra non avevano funzionato. Quindi ho dovuto reimmettere la classe personalizzata in tutti gli Xibs deviati. Come risultato sorprendente, è riuscito e quello che ho fatto ha ricollegato la connessione persa tra @interface e IB. Spero di essere utile.

0

Questo è successo a me quando ho rinominato la classe di visualizzazione personalizzata e il modulo (nell'ispettore identità quando la vista è selezionata) era vuoto. Rimase vuoto perché Xcode non completava automaticamente il nome della classe personalizzata, quindi lasciò il modulo vuoto. Tutto quello che dovevo fare era ri-immettere il nome della classe, dopo una build, e poi compilato automaticamente, e selezionati per modulo appropriato (Corrente - Obiettivo)

enter image description here