2012-01-12 15 views
6

मैं लाल रंग के साथ कुछ तालिका पंक्ति रंग करने के लिए कोशिश कर रहा हूँ तो मैंजवाब नहीं करता है, तो tableView पर सेट cell.backgroundColor: cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
... init Code here 
cell.backgroundColor = [UIColor redColor]; 
cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 

गौण चेकमार्क दिखाई देता है लेकिन लाल रंग नहीं जोड़ने की कोशिश की।

बाद में मैंने पाया कि इसे तालिका में रखकर देखें: willDisplayCell यह काम करता है। क्या यह डिजाइन द्वारा है? यह सेल को शुरू करने के पल में पहले से निर्धारित मूल्य को अनदेखा क्यों कर रहा है?

उत्तर

3

सेल का स्वरूप tableView:willDisplayCell में अनुकूलित किया गया है। तो, अपने प्रश्न का उत्तर देने के लिए, हाँ यह डिजाइन द्वारा है। सेल के contentView के एक्सेसरी दृश्य और सबव्यूज़ को cellForRowAtIndexPath में संशोधित/असाइन करने की आवश्यकता है।

tableView:willDisplayCell:forRowAtIndexPath: के प्रलेखन से:

एक तालिका दृश्य अपने प्रतिनिधि को यह संदेश बस से पहले ही सेल का उपयोग करता है एक पंक्ति आकर्षित करने के लिए है, जिससे प्रतिनिधि की अनुमति से पहले ही प्रदर्शित किया जाता है सेल वस्तु अनुकूलित करने के लिए भेजता है। यह विधि प्रतिनिधि को तालिका दृश्य द्वारा सेट किए गए राज्य-आधारित गुणों को ओवरराइड करने का मौका देती है, जैसे चयन और पृष्ठभूमि रंग। प्रतिनिधि वापसी के बाद, तालिका दृश्य केवल अल्फा और फ्रेम गुण सेट करता है, और उसके बाद पंक्तियों को एनिमेट करते समय केवल स्लाइड या आउट करते समय।

1

एफवाईआई, रवि का जवाब सही है, लेकिन यदि आप अपने कार्यान्वयन को सरल बनाना चाहते हैं, तो आप उसी प्रभाव को प्राप्त करने के लिए सेल की सामग्री को पृष्ठभूमि रंग भी सेट कर सकते हैं।

cell.contentView.backgroundColor = [UIColor redColor];

यह दस्तावेज समाधान नहीं है, लेकिन निम्नलिखित काम करेगा:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
... init Code here 
    cell.contentView.backgroundColor = [UIColor redColor]; 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
संबंधित मुद्दे