2011-09-22 20 views
5

मेरे पास एक कस्टम UITableViewCell है जो एनएसएट्रिब्यूटेड स्ट्रिंग का उपयोग करता है। जब मैं सेल का चयन करता हूं तो मैं रंग बदलना चाहता हूं। मैं NSAttributedString को UILabel के रूप में हाइलाइट किए गए टेक्स्टक्लोर सेट के साथ समान व्यवहार कैसे कर सकता हूं?हाइलाइट किए गए टेक्स्टक्लोरर को कैसे सेट करें @ एनएसएट्रिब्यूटेड स्ट्रिंग

मैं कार्यों setSelected और सेल के setHighlighted पर रंग बदलने की कोशिश की है, लेकिन यह पहले से

धन्यवाद (टचडाउन के बजाय touchUpInside पर) देर से लगता है कि वे कहा जाता है!

+0

क्या आपने smth का उपयोग करने की कोशिश की है: NSAttributedString स्ट्रिंग; [स्ट्रिंग एडएट्रिब्यूट: NSForegroundColorAttributeName मान: [यूआईसीओलर रेडकोलर] रेंज: एनएसएमकेरेंज (0, [स्ट्रिंग लम्बाई])]; जब आपका सेल चुना जाता है? – Maggie

+0

मैं टेक्स्ट रंग बदल सकता हूं, लेकिन मुझे एहसास नहीं है कि सेल को तब तक चुना गया है जब तक टचअप – Daniel

+0

didSelectRowAtIndexPath - कोई भाग्य नहीं है? – Maggie

उत्तर

1

UILabel उपवर्ग समाधान

@implementation CustomLabelHighlighted 
{ 
    NSAttributedString *savedAttributedString; 
} 

-(void)setHighlighted:(BOOL)highlighted 
{ 
    [super setHighlighted:highlighted]; 

    if (!highlighted) 
    { 
     [super setAttributedText:savedAttributedString]; 
     return; 
    } 

    NSMutableAttributedString *highAttributedString = [savedAttributedString mutableCopy]; 
    NSRange range = NSMakeRange(0, highAttributedString.string.length); 
    [highAttributedString addAttribute:NSForegroundColorAttributeName value:self.highlightedTextColor range:range]; 
    [super setAttributedText:highAttributedString]; 
} 

- (void)setAttributedText:(NSAttributedString *)attributedText 
{ 
    [super setAttributedText:attributedText]; 
    savedAttributedString = attributedText; 
} 

@end 
+0

बुलेट प्रूफ समाधान नहीं, लेकिन सुविधाजनक है जब आपको बहुत सरल उपयोग मामलों को संभालने की आवश्यकता होती है – marcio

0

आम तौर पर यह/चयन का पता लगाने पर प्रकाश डाला और उस पर निर्भर करता है रंग बदलने के बहुत सरल है। महत्वपूर्ण तरीके हैं:

-(void)setHighlighted:animated: 
-(void)setSelected:animated: 

टिप्पणी है कि, जब अधिभावी आप animated: साथ तरीकों का उपयोग करने के लिए है, अन्यथा यह काम नहीं करेगा।

जब आप केवल रंग बदलना चाहते हैं, तो सबसे आसान समाधान लेबल पर रंग को सेट करने देना है, न कि स्ट्रिंग पर। ध्यान दें कि जिम्मेदार स्ट्रिंग अभी भी UILabel के सभी गुणों को विरासत में ले रही है।

संबंधित मुद्दे