मुझे UITableViewCell
का सबक्लास मिला है। मेरे उप-वर्ग में कई UILabel
एस शामिल हैं। मैं चाहता हूं कि मेरा सबक्लास इन लेबलों को कुछ डिफ़ॉल्ट सेटिंग्स में प्रारंभ करने के लिए चाहता है जो मेरे प्रत्येक तालिका दृश्य कक्ष पर लागू होता है।initWithCoder आइटम को सही तरीके से प्रारंभ क्यों नहीं कर रहा है?
मैंने पढ़ा है कि मुझे इसके लिए initWithCoder
का उपयोग करना चाहिए। मेरा initWithCoder
फ़ंक्शन कहा जा रहा है, और मैं अपने फ़ंक्शन में प्रत्येक पंक्ति के माध्यम से कदम उठा सकता हूं और यह गति के माध्यम से जाना प्रतीत होता है। जब मैं अपना आवेदन चलाता हूं तो मुझे कोई भी गुण लागू नहीं होता है, हालांकि। सबसे महत्वपूर्ण बात यह है कि फ़ॉन्ट नहीं बदला जा रहा है। मुझे नहीं लगता कि मैं अपने UILabel
एस पर संशोधित किसी भी गुण को वास्तव में सहेजा जा रहा हूं, या प्रदर्शित किया जा रहा हूं।
मैं इस सबक्लास का उपयोग Storyboard
के संयोजन के साथ कर रहा हूं। मुझे पता है कि मेरे परिवर्तन Storyboard
पर प्रतिबिंबित नहीं होंगे, लेकिन जब भी मेरे कोड को निष्पादित किया जाता है, तब भी वे एप्लिकेशन पर चलने पर प्रतिबिंबित नहीं होते हैं।
संपादित करें:। मैं initWithCoder
ओवरराइड करने के लिए कोशिश कर रहा से पहले, मैं इन उपवर्गों कि मैं इस तर्क को चलाने था में एक उदाहरण विधि था कि उल्लेख करना चाहता था मैं बस cellForRowAtIndexPath
के अंदर कि उदाहरण विधि कॉल करेगा। यह विधि काम कर रही थी, लेकिन मैंने सोचा कि यह सबक्लास इस तर्क में स्वचालित रूप से होने के लिए आसान होगा।
कोई विचार? मेरे कोड के नीचे है:
#import "ThreadListCell.h"
@implementation ThreadListCell
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
// adjust the font settings of the title
self.title.font = [UIFont fontWithName:@"SourceSansPro-Black" size:16];
self.title.textColor = [UIColor colorWithWhite:0.267f alpha:1.0f];
// adjust the font settings of the subtitle
self.text.font = [UIFont fontWithName:@"SourceSansPro-Light" size:14];
self.text.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];
self.text.textColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];
// adjust the font settings of the location
self.location.font = [UIFont fontWithName:@"SourceSansPro-Light" size:8];
self.location.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];
// adjust the UILabel settings of the title
self.title.numberOfLines = 0;
self.title.lineBreakMode = UILineBreakModeTailTruncation;
// adjust the UILabel settings of the subtitle
self.text.numberOfLines = 0;
self.text.lineBreakMode = UILineBreakModeTailTruncation;
// adjust the UILabel settings of the location
self.location.numberOfLines = 0;
self.location.lineBreakMode = UILineBreakModeTailTruncation;
self.location.textAlignment = UITextAlignmentRight;
}
return self;
}
@end
और हैडर:
#import <UIKit/UIKit.h>
@interface ThreadListCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *text;
@property (nonatomic, weak) IBOutlet UILabel *title;
@property (nonatomic, weak) IBOutlet UILabel *location;
@end
ओह, ठीक है। 'AwitFromNib' के साथ' initWithCoder' को प्रतिस्थापित करने की अपेक्षा की जाती है। आपका बहुत बहुत धन्यवाद! – Ryan
हालांकि, ऐसा लगता है कि 'cellForRowAtIndexPath' में मेरे किसी भी गुण को सेट करने से पहले' awakeFromNib' होता है। इससे मुझे लगता है कि शायद मेरी आवृत्ति विधि बेहतर दृष्टिकोण थी, क्योंकि मैं विश्वसनीय रूप से 'UILabel', आदि में वर्तमान पाठ के आधार पर आकार बदलने के संचालन कर सकता था। – Ryan
आदेश होना चाहिए: initWithCoder, awakeFromNib, cellForRowAtIndexPath। यदि आपको कुछ गणित मानों को "प्रीसेट" करने की आवश्यकता है, तो आप इसे इनिट रूटीन में कर सकते हैं। लेकिन जब तक निब लोड नहीं हो जाता है तब तक आपके पास अपने आउटलेट तक पहुंच नहीं है। –