غير قادر على تعيين حقل النص على UILabel
-
06-07-2019 - |
سؤال
ولقد خلق الطبقة UITableCellView
دعا NoteCell
. يحدد رأس ما يلي:
#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
في تنفيذ لدي التعليمات البرمجية التالية للأسلوب setNote:
:
- (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];
}
وهذا فشل في تعيين حقل نص UILabel
وإخراج رسائل سجل هو:
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)
ولقد حاولت أيضا تعيين حقل نص UILabel
باستخدام بناء الجملة التالي:
[self.noteTextLabel setText:newNote.noteText];
وهذا لا يبدو أن تحدث فرقا.
وأي مساعدة سيكون محل تقدير كبير.
المحلول
ولقد قمت بإعداد noteTextLabel في أي مكان؟ ما هذا يبدو وكأنه بالنسبة لي هو أن كنت مراسلة كائن لا شيء. عند خلقكم الخلية، noteTextLabel هو لا شيء. لو كنت أبدا إعداده، كنت تفعل أساسا ما يلي:
[nil setText: newNote.noteText];
وعندما كنت في وقت لاحق في محاولة للوصول إليه، وأنت تفعل هذا:
[nil text];
والذي سيعود لا شيء.
في طريقة -initWithFrame:reuseIdentifier:
الخاص بك، فإنك تحتاج إلى إنشاء صراحة noteTextLabel الخاص بك، وإضافة على أنها subview لعرض محتوى الخليوي في:
self.noteTextLabel = [[[UILabel alloc] initWithFrame: CGRectMake(0, 0, 200, 20)] autorelease];
[self.contentView addSubview: self.noteTextLabel];
وبعد هذا يجب أن تعمل.
وأيضا، كملاحظة الأسلوبية، وأود أن جعل property
لnoteTextLabel للقراءة فقط، منذ كنت فقط تريد الذهاب الى الوصول إليه من خارج الصف، لم تطأ عليه.