2010-01-08 14 views
5

जो मैं करना चाहता हूं वह एक एनएसटीबल व्यू में चयनित पंक्ति का पृष्ठभूमि रंग सेट करता है जब एक बटन क्लिक किया जाता है। मैंने अन्य मामलों को देखा है जहां लोगों ने tableView:willDisplayCell:forTableColumn:row: और setBackgroundColor: का उपयोग किया है, लेकिन मुझे नहीं लगता कि यह मेरी स्थिति में काम करेगा जहां मैं बटन पर क्लिक होने पर ऐसा करना चाहता हूं।एक एनएसटीबल व्यू में एक पंक्ति रंग

मुझे लगता है कि मैं NSTableView के selectedRow विधि के साथ चयनित पंक्ति खोजने के लिए और setBackgroundColor: के साथ एक सेल के लिए पृष्ठभूमि रंग सेट कर सकते हैं पता है, लेकिन मैं कैसे करना है पता नहीं है क्या है एक NSCell लिए चयनित पंक्ति के लिए एक NSInteger से मिलता है के पृष्ठभूमि रंग सेट करने के लिए।

उत्तर

7

NSTableView प्रत्येक कॉलम के लिए NSCell का केवल एक उदाहरण उपयोग करता है। सामग्री को चित्रित करते समय, सेल प्रत्येक पंक्ति के लिए अद्यतन किया जाता है। यही कारण है कि एक निर्दिष्ट पंक्ति के लिए सेल प्राप्त करने के लिए कोई विधि नहीं है- आपको tableView:willDisplayCell:forTableColumn:row: में सेल को संशोधित करना होगा।

आप reloadDataForRowIndexes:columnIndexes: का उपयोग करके केवल एक पंक्ति को अपडेट करने के लिए तालिका दृश्य को बता सकते हैं।

+0

मैं सिर्फ इस http://grab.by/1CoC लेकिन यह रंग हर एक पंक्ति की कोशिश की है भूरे रंग को सिर्फ एक ही मैं पुनः लोड नहीं करता हूं। – Joshua

+1

1. 'int' का उपयोग न करें। 'NSInteger' का प्रयोग करें। 2. निकोलई ने जो कहा वह करने का प्रयास करें। (ध्यान दें कि इसके लिए हिम तेंदुए की आवश्यकता है।) 3. अपना 'टेबल दृश्य बनाएं: willDisplayCell: forTableColumn: पंक्ति:' विधि दोनों जांचें कि पंक्ति का चयन किया गया है या नहीं और उपयोगकर्ता ने बटन पर क्लिक किया है या नहीं। –

+0

1. ठीक है। 2 और 3. मैं वही नहीं कर सकता जो उसने कहा था क्योंकि मेरे पास NSOutlineView है, या मैं ऐसा कर सकता हूं क्योंकि NSOutlineView एनएसटीबल व्यू से विरासत में आता है? – Joshua

5

NSTableview पंक्ति

- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell1 forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
     if(row==1) 
     [cell1 setBackgroundColor:[NSColor redColor]]; 
     else if(row==2||row==3) 
     [cell1 setBackgroundColor:[NSColor greenColor]]; 
     else 
     [cell1 setBackgroundColor:[NSColor clearColor]]; 
} 

लिए पृष्ठभूमि रंग सेट करने के लिए इस पद्धति का उपयोग हम प्रत्येक पंक्ति के लिए अलग अलग रंग दे सकते हैं .. सुनिश्चित करें drawsBackgroundNSTextFieldCell पर सक्षम है अन्यथा इस कोई असर नहीं होगा!

+0

'ड्रॉ बैकग्राउंड' पर अच्छा पॉइंटर। – DTs

5

आप बस एक पूरे चयनित पंक्ति का रंग बदलना चाहते हैं:

NSInteger selectedRow = [self.nsTableView selectedRow]; 
NSTableRowView* rowView = [self.nsTableView rowViewAtRow:selectedRow makeIfNecessary:NO]; 
[rowView setBackgroundColor:[NSColor blackColor]]; 

GLHF

+2

केवल तभी यदि आप व्यू-आधारित टेबल का उपयोग कर रहे हैं। अगर हम सेल-आधारित टेबल के बारे में बात कर रहे हैं, जैसा कि मुझे लगता है कि हम हैं, तो पंक्ति दृश्य देखें: ... विधि हमेशा शून्य वापस आ जाएगी। – dgatwood

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