2015-06-22 8 views
11

Sto provando a sottoclasse il mio UIButton sullo Storyboard con una classe Swift personalizzata che dovrebbe mostrare il pulsante come un pulsante Hamburger personalizzato.IB Designables fornisce strani avvisi quando si utilizza una classe personalizzata

Viene visualizzato questo avviso e non viene visualizzato il pulsante Hamburger in Interface Builder, sebbene funzioni in modo intermittente.

La classe personalizzata si chiama NTHamburgerButton, non so perché la stringa sui caratteri venga visualizzata prima del nome della classe.

IB Designables: utilizzando la classe UIButton per oggetto con classe personalizzata perché la classe _TtC6CProjectName17NTHamburgerButton non esiste.

+0

Mostraci del codice –

+0

Problemi simili segnalati qui: http://stackoverflow.com/questions/26674111/ib-designable-ibinspectable-interface-builder-does-not-update. –

+0

Sembra che funzioni ora da quando ho aggiunto alcuni attributi IBInspectable alla classe personalizzata, non ho bisogno che siano Ispezionabili, ma almeno fa funzionare Interface Builder come previsto – Codermonk

risposta

6

Questa domanda sembra ricevere nuovamente un po 'di attenzione, quindi fornirò un aggiornamento.

Questo problema si verificava in un progetto misto Obj-C e Swift. Quindi la classe in questione era una classe Swift.

Quando si effettuano corsi di Swift disponibili in Obj-C, è possibile utilizzare la seguente sintassi

@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {} 

In caso contrario, nel vostro {Project-Name} file di -Swift.h che Xcode crea si vedrà che essa genera questi nomi di classe unici come quello dalla domanda.

L'unico vero problema era che il file NTHamburgerButton.swift non era incluso nel Prodotto che stavo guardando al momento, ma se avessi cambiato target, funzionava perfettamente. Quindi il problema intermittente.

4

Ho incontrato lo stesso problema, e ho trovato una risposta da un'altra domanda: enter link description here

ho solo aggiornare tutti Visualizzazioni enter image description here

Funziona per me. Spero che ti aiuti anche tu.

2

Per me entrambe le soluzioni di Codermonk e specialvict erano necessarie, ma non abbastanza.

Avevo anche per accendere ereditare da bersaglio in Interface Builder:

enter image description here

Questo ha fatto il trucco per me.

+0

Ho importato una classe IBDesignable in cocapods, ed era solo una classe ObjC con intestazione swift all'interno che causava lo stesso avvertimento, e per farlo funzionare dovevo scegliere la classe importata in "Module" per farlo funzionare –

Problemi correlati