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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top