2009-11-23 18 views
7

Come si collega l'uscita "delegato" di un UITextView a una classe che implementa il protocollo UITextViewDelegate?Come si collega l'uscita "delegato" di un UITextView a una classe che implementa il protocollo UITextViewDelegate?

io non riesco a trovare un esempio in the docs

La cosa strana è presa "delegato" del UITextView ha quel drag 'n drop coso, come è possibile cablare fino a un altro widget ma di Certo, non voglio collegarlo ad un widget, voglio collegarlo ad una classe esistente .

risposta

3

Se vuoi dire "come faccio a fare un oggetto che viene creato con il codice del delegato per il mio punto di vista del testo", basta impostare la proprietà delegato (questo è ciò che si trascina in Interface Builder farà per voi):

textView.delegate = yourDelegateObject; 
+0

Ok, ma, avete qualche idea del perché le _looks uscita like_ che possono essere trascinati su un widget? Non è possibile trascinare la presa su un pezzo di codice, quindi perché è stata progettata in questo modo? – bobobobo

+1

È possibile creare un'istanza di qualsiasi oggetto nel generatore di interfacce, ad esempio l'oggetto che sarà il delegato e trascinarlo. Se si desidera fare ciò, basta creare un "oggetto" dalla tavolozza del generatore di interfacce (in Oggetti e controllori), quindi impostare la classe sulla classe in Identificatore identità. Quando il pennino viene caricato, la classe verrà istanziata, quindi assicurati di non farlo anche nel tuo codice. – Rhult

+0

Dolce. In questo modo funziona. – bobobobo

6

per cablare un delegato in Interface Builder:

(1) trascinare un controller appropriato nella finestra principale pennini e impostare la classe del controller per la classe del vostro delegato. Ad esempio, se hai una sottoclasse NSObject chiamata "MyDelegateClass", trascina un controller Object e imposta la sua classe su "MyDelegateClass".

(2) Nell'ispettore connessioni per UITextView, fare clic con il pulsante di controllo su delegate e collegarlo al controller creato nel passaggio (1).

Questo è tutto.

+0

Sembra abbastanza ragionevole, ma ora quando eseguo l'applicazione, l'applicazione si blocca senza preavviso ogni volta che tocco TextView. – bobobobo

+0

Sì. E l'applicazione FUNZIONA quando uso il metodo 'textView.delegate = yourDelegateObject;' di cui parla Rhult. – bobobobo

+1

Il metodo di Rhult è il metodo programmatico. È quello che uso la maggior parte del tempo perché è difficile trovare errori in IB. Pensavo volessi sapere come configurarlo nel generatore di interfacce e questo è il metodo corretto per farlo. Un crash suggerisce che non hai ancora assegnato il delegato correttamente. Ricorda che devi soddisfare due protocolli per le tabelle, un delegato e un'origine dati. La stessa classe/istanza può implementare entrambi, ma devi collegare le tabelle 'delegate' e' datasource' in IB. – TechZen

6

Questa è una domanda piuttosto vecchia, ma ho avuto problemi anche con esso e ho pensato di condividere una soluzione Xcode 5 aggiornata.

Dovresti riuscire a trascinare il delegato sul cerchio giallo con il quadratino bianco al suo interno che si trova in quella barra nera sotto il controller della vista sullo storyboard. Questo non è affatto ovvio, così ho fornito uno screenshot

enter image description here

+0

esattamente quello che stavo cercando. grazie mille!! –

Problemi correlati