2010-11-10 8 views
30

में UITableViewCell का पृष्ठभूमि रंग सेट नहीं कर सकता है मैंने टेबल का एक समूह बनाया है जिसे मैं तालिका दृश्य में पुन: उपयोग करता हूं। उन सभी कोशिकाओं में उनके पास अलग-अलग UILabel एस हैं और कुछ UIImageView एस (कुछ भी पूर्ण सेल को कवर नहीं करता है)।आईआई

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

मैंने इसे tableView:cellForRowAtIndexPath: में सेट करने का प्रयास किया लेकिन यह ऐसा काम नहीं करता जैसा मैं सोचता हूं।

यह काम कर देता है:

cell.contentView.backgroundColor = [UIColor redColor]; 

लेकिन इन पर कोई असर नहीं (मैं cell.contentView.backgroundColorclearColor को सेट करने के बावजूद): में

cell.backgroundView.backgroundColor = [UIColor redColor]; 

cell.backgroundColor = [UIColor redColor]; 

मैं सभी लेआउट/font/पृष्ठभूमि सामान सेट आईबी। कोई विचार क्यों यह इस मामले में काम नहीं कर रहा है?

मुझे contentView के backgroundColor को संशोधित करने की आवश्यकता क्यों नहीं है और backgroundView नहीं है?

ऐसा लगता है कि यह एक आम मुद्दा है। क्या कोई मुझे सही दिशा में इंगित कर सकता है (अंततः) समझता है कि तालिका दृश्य कक्ष में पृष्ठभूमि रंगों को कैसे नियंत्रित किया जाता है।

उत्तर

1

एक आसान समाधान नहीं है: जब आप इंटरफ़ेस बिल्डर में एक UITableViewCell बनाने के लिए, बस खींचें और एक अतिरिक्त UIView ड्रॉप इतना है कि यह पूरे UITableViewCell आप आईबी के भीतर बना रहे हैं शामिल हैं। अपने अतिरिक्त यूआई तत्वों को इस अतिरिक्त UIView के शीर्ष पर रखें। आप यह अतिरिक्त UIView जो भी पृष्ठभूमि चाहते हैं उसे सेट कर सकते हैं।

कि आप इस तरह कोड की एक पंक्ति का उपयोग करके अपने UITableViewCell की पृष्ठभूमि का रंग बदलने का सुझाव StackOverflow पर काफी कुछ जवाब नहीं है: आप का समायोजन करके अपने सेल करने के लिए एक बूंद छाया जोड़ देते हैं तो

cell.contentView.backgroundColor = [UIColor redColor]; 

contentView का फ्रेम आकार थोड़ा सा, आप पाएंगे कि यह लाइन आपके सेल के पृष्ठभूमि रंग और आपके ड्रॉप छाया क्षेत्र के रंग दोनों को भी बदलेगी। जानकारी के लिए

51

सेल के पृष्ठभूमि रंग को बदलने के लिए, आपको इसे WillDisplayCell में करना होगा: forRowAtIndexPath: विधि। यह बॉक्स किए गए नोट में शीर्ष के पास UITableViewCell documentation में उल्लिखित है। तो अगर आप की जरूरत है:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor redColor]; 
} 

contentView है सिर्फ सिफारिश subview ताकि सेल से बाहर रखी हो जाता है ठीक से जब तालिका संपादन चल रहा है में कस्टम नियंत्रण डाल करने के लिए।

+2

thx। लेकिन फिर भी, आईबी में सेटिंग क्यों काम नहीं कर रही है? मैं बस नियंत्रक में label.text सेट। और पृष्ठभूमि आईबी सभी निब (UIView) में काम करता है, लेकिन UITableViewCell के साथ नहीं। – klemens

+0

इस समय पुष्टि करने में सक्षम नहीं है लेकिन UITableViewCell एक विशेष मामला प्रतीत होता है।WillDisplayCell और कस्टम सेल्स के लिए ऐप्पल दस्तावेज़ों में, यह इस विधि का उपयोग करने का उल्लेख करता है जिसे "टेबल व्यू के चयन के आधार पर रंग सेटिंग सेट करने के बाद" कहा जाता है। यह काम कर सकता है यदि आप कोड में UITableViewCell का कस्टम सबक्लास बनाते हैं लेकिन अभी इसे जांचने में सक्षम नहीं हैं। – Anna

+0

ठीक है, इसलिए मैंने इसे कोड में सेट अप किया है। आपकी सबसे उत्कृष्ट मदद के लिए thx। – klemens

1

मुझे this Cocoa With Love article वास्तव में सहायक पाया गया क्योंकि यह पूरी तरह से अनुकूलित तालिका दृश्य और इसे कैसे किया जाता है।

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