Nicht imstande, Textfeld zu setzen auf UILabel
-
06-07-2019 - |
Frage
Ich habe UITableCellView
Klasse erstellt genannt NoteCell
. Der Header definiert die folgenden:
#import <UIKit/UIKit.h>
#import "Note.h"
@interface NoteCell : UITableViewCell {
Note *note;
UILabel *noteTextLabel;
}
@property (nonatomic, retain) UILabel *noteTextLabel;
- (Note *)note;
- (void)setNote:(Note *)newNote;
@end
Bei der Implementierung ich den folgenden Code für die setNote:
Methode habe:
- (void)setNote:(Note *)newNote {
note = newNote;
NSLog(@"Text Value of Note = %@", newNote.noteText);
self.noteTextLabel.text = newNote.noteText;
NSLog(@"Text Value of Note Text Label = %@", self.noteTextLabel.text);
[self setNeedsDisplay];
}
Dies scheitert das Textfeld des UILabel
zu setzen und die Ausgabe der Log-Meldungen ist:
2008-11-03 18:09:05.611 VisualNotes[5959:20b] Text Value of Note = Test Note 1
2008-11-03 18:09:05.619 VisualNotes[5959:20b] Text Value of Note Text Label = (null)
Ich habe auch versucht, das Textfeld von UILabel
setzt die folgende Syntax verwenden:
[self.noteTextLabel setText:newNote.noteText];
Dies scheint keinen Unterschied zu machen.
Jede Hilfe wäre sehr geschätzt werden.
Lösung
Haben Sie Ihren noteTextLabel überall einrichten? Was dies wie sieht für mich ist, dass Sie ein Null-Objekt sind Messaging. Wenn Sie Zelle erstellt wird, ist noteTextLabel gleich Null. Wenn Sie es nie einrichten, sind Sie im Grunde tun die folgenden Möglichkeiten:
[nil setText: newNote.noteText];
Und wenn Sie später versuchen, darauf zuzugreifen, Sie tun dies:
[nil text];
Welche zurückkehren Null wird.
In Ihrer -initWithFrame:reuseIdentifier:
Methode, müssen Sie explizit Ihre noteTextLabel erstellen, und fügen Sie es als ein Subview für Ihr Handy Inhalt Ansicht:
self.noteTextLabel = [[[UILabel alloc] initWithFrame: CGRectMake(0, 0, 200, 20)] autorelease];
[self.contentView addSubview: self.noteTextLabel];
Dann sollte diese Arbeit.
Auch als Stilnote, würde ich die property
für noteTextLabel nur lesbar machen, da Sie nur von außerhalb der Klasse gehen zu wollen, darauf zuzugreifen, sie nie eingestellt.