2010-05-07 21 views
5

मेरे पास एक एनएसटीबल व्यू है जो मेरे पास ऑब्जेक्ट्स की एक सरणी प्रदर्शित कर रहा है। इन ऑब्जेक्ट्स (पंक्तियों) में से प्रत्येक के लिए मैं प्रत्येक ऑब्जेक्ट पर चलने वाले फ़ंक्शन के परिणामों के आधार पर प्रदर्शित टेक्स्ट का रंग बदलना चाहता हूं;रंग प्रति एनएसटीबल व्यू टेक्स्ट

तो उदाहरण के लिए किसी अन्य सूची में मौजूद तालिका में सभी ऑब्जेक्ट (या कुछ अन्य आवश्यकता) मैं उन्हें हरे रंग के पाठ में प्रदर्शित करना चाहता हूं, और ऑब्जेक्ट्स जो लाल रंग में प्रदर्शित नहीं होते हैं।

मैं यह करने के बारे में कैसे जाउंगा?

उत्तर

6

मान लें कि आपकी तालिका में NSTextFieldCell है (अन्य कक्षों के लिए, पाठ रंग सेटिंग भिन्न हो सकती है), आप NSTableView की प्रतिनिधि विधि को लागू करके इसे प्राप्त कर सकते हैं।

सबसे पहले, आपको इंटरफेस बिल्डर में या अपने कोड में NSTableView के लिए एक प्रतिनिधि को परिभाषित करना होगा। उदाहरण के लिए यह आपका एप्लिकेशन नियंत्रक हो सकता है।

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 
    NSTextFieldCell *cell = aCell; 
    if (...) { 
     [cell setTextColor:[NSColor greenColor]]; 
    } else if (...) { 
     [cell setTextColor:[NSColor redColor]]; 
    } else { 
     [cell setTextColor:[NSColor blackColor]]; 
    } 
} 

हर बार NSTableView एक सेल आकर्षित करेगा, आप इसे संशोधित करने के लिए इससे पहले कि यह तैयार हो जाओ अवसर है:

फिर, बस निम्न विधि को लागू।

अधिक जानकारी के लिए NSTableViewDelegate दस्तावेज़ीकरण पृष्ठ देखें।

+0

तालिका में मैं उपयोग कर रहा हूं मेरे पास केवल NSTextFieldCell है, लेकिन अगर मेरे पास अलग-अलग होता तो यह तरीका काम नहीं करेगा? – Tristan

+0

ठीक है, सभी कोशिकाओं में NSButtonCell की तरह "textcolor" और "setTextColor:" विधियां नहीं हैं। यह जांचने के लिए सिर्फ एक चीज है। –

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