2010-09-30 2 views
9

Sto provando a fare qualcosa di semplice come aggiungere un'etichetta a una vista in XCode e IB e non riesco a capire come farlo. Tutti i campioni che trovo online sono per versioni precedenti di IB quindi le indicazioni non sono corrette.Collegare una UILabel in Interface Builder e XCode?

Ho un'etichetta sul mio file .xib, nel mio file Controller.h ho una UILabel IBOutlet dichiarata con una proprietà impostata.

Nel mio file Controller.m ho sintetizzato quella proprietà.

In Interface Builder, non posso per la VITA di me capire come associare la mia etichetta nel mio codice con l'etichetta sul .xib. Ogni volta che provo a trascinare la connessione al proprietario del file, l'unica opzione che appare è "Visualizza".

Se guardo il Controller sotto la Finestra Libreria di Interface Builder, l'Etichetta si presenta come UILabel sotto Prese. Sono abbastanza sicuro che fosse un tipo "id", ma si presenta automaticamente come UILabel e se provo ad aggiungere uno "id", non funziona neanche.

Qualcuno può indicarmi un posto dove spiegare questa stupida cosa? Non dovrebbe essere così difficile fare in modo che un'etichetta abbia un testo.

+0

si prega di inviare la Controller.m e .h file – ennuikiller

+0

PackViewController.h: http://pastebin.com/ DesS8j50 PackViewController.m: http://pastebin.com/jasum3SB –

+0

Non ha problemi a dichiarare l'iboutlet. Ha solo bisogno di collegarlo correttamente. Sta cercando di collegare l'etichetta all'icona del proprietario dei file che mostrerà solo VIEW. Se guardi il post che ti ho mandato, ho scritto un po 'di codice come Pselus, ma questo è solo per ASSICURARSI DI SCRIVERE IL CODICE correttamente. poi entriamo in interfacebuilder e ti spiego cosa devi fare nel post. controllalo qui sotto. grazie PK – Pavan

risposta

8

Supponendo che la vista sia chiamata ExampleView. Fare clic sul proprietario del file e quindi premere ⌘ + 4. Questo evidenzierà la casella di identità. Assicurati che il nome della classe sia uguale al nome della tua classe.

Salva e chiudi Interface Builder e poi andare in Xcode e verificare:

// ExampleViewController.h 
#import <UIKit/UIKit.h> 

@class ExampleViewController; 
@interface ExampleViewController : UIViewController { 

    IBOutlet UILabel *label; 
} 

@property (retain, nonatomic) IBOutlet UILabel *label; 

@end 

Nel file .m:

// ExampleViewController.m 
#import "ExampleViewController.h" 

@implementation ExampleViewController 

@synthesize label; 

quindi salvare i file Xcode e di aprire il vostro ExampleView. Trascina un'etichetta sulla vista. Non si suppone che colleghi quell'etichetta al proprietario dei File.

ANCORA FARE CLIC SUL FILEOWNER. HIT ⌘ + 2 questo aprirà la scatola delle connessioni. allora vedrai il tuo sbocco. Clicca e collegalo alla tua etichetta.

+0

L'utilizzo di questa tecnica sembrava funzionare, ma ora quando provo a caricare quella vista ottengo un errore "SIGABRT" con questo messaggio "questa classe non è un valore chiave che codifica per la chiave cardNameLabel'. –

+0

noto un errore nel codice ... nel file .H .... si suppone di aggiungere IBOUTLET dopo la proprietà (mantenere, non anatomico) IBOUTLET uilabel * cardnamelabel. solo proprietà wronte (retain, nonatomic) uilabel * cardNamelabel. che non è un iboutlet – Pavan

+0

Ho cambiato il mio codice per usare il tuo, tranne per il **, è necessario e che cosa è nel mondo? –

3

Assicurarsi che la linea di proprietà è simile al seguente:

@property (nonatomic, retain) IBOutlet UILabel *label; 

Leave (o impostare) il tipo di etichetta come UILabel in Interface Builder. Se ciò non funziona, prova File -> Ricarica tutti i file di classe in Interface Builder. Il tuo codice sembra buono, ma CardNameLabel dovrebbe iniziare con una "c" minuscola.

+1

dichiarare che la tua UILabel come una proprietà è facoltativa. –

2

Prova questo: fai clic sull'icona Proprietario del file per selezionarlo e vai alla scheda Identità dell'Ispettore (la quarta scheda) e verifica il valore dell'impostazione Class. La mia ipotesi è che è attualmente impostato su UIViewController.

Dal momento che la classe che ha il IBOutlet si dichiarata è (o dovrebbe essere) una sottoclasse di UIViewController, è necessario modificare il nome della classe per il nome della sottoclasse (ad esempio, MyController, o come si attualmente chiamato) .

0

Si supponga di avere un viewController e un file xib su cui è presente un UILabel.La procedura per il collegamento alla UILabel (anche il file XI ter) il vostro viewController sono:

1) Nel file di intestazione, creare oggetto UILabel e proprietà per essa

IBOutlet UILabel *label; 

@Property (Nonatomic, retain) IBOutlet UILabel *label; 

e synchthesize nel realizzare file di

2) Aprire il file XI ter in Interface Builder

doppio clic su "proprietario del file", quindi selezionare la viewController in DropDownList di finestre pop-up per collegare il file XI ter del controller

.210

3) fare clic destro sul proprietario del file, nella finestra di pop-up:

  • punto e trascinare il peluche (+) accanto a "Visualizza" e rilasciarlo su Visualizza fila
  • punto e trascinate il peluche (+) accanto a "etichetta" e rilasciarlo in etichetta sulla vista

=> ora l'etichetta e la vista sul file di XI ter è collegato a te controller