2009-06-03 15 views
5

एक आईफोन के लिए, मुझे एक UITableView मिला है जिसे समूहीकृत किया गया है, इसमें एक सेक्शन है, और जिसमें मैंने एक सेक्शन हेडर सेट किया है जो कि निबेल से UILabel ऑब्जेक्ट है। जब तालिका दृश्य प्रदर्शित होता है, तो हेडर ठोस काले रंग के पट्टी के रूप में दिखाई देता है - कोई पाठ नहीं।UITableView सेक्शन हेडर सभी काले

ऊंचाई मेंफॉरहेडर इनसेक्शन मैंने ऊंचाई को फ्रेम बनाने के लिए सेट किया है। UILabel ऑब्जेक्ट की शीट। जब मैं आईबी में ऊंचाई बदलता हूं, तो काले पट्टी की ऊंचाई बदल जाती है। तो मुझे पता है कि .m फ़ाइल सही UILabel ऑब्जेक्ट पर लगी है।

डीबगर में, फॉरहेडर इनसेक्शन में, ऐसा लगता है कि UILabel ऑब्जेक्ट की चौड़ाई शून्य है, और ऊंचाई 1079574528 है, और पाठ शून्य है।

मैं क्या गलत कर रहा हूं पर कोई विचार?

उत्तर

0

आप अपने heightForHeaderInSection और अपने viewForHeaderInSection कार्यों के लिए कोड पोस्ट कर सकते हैं? आप जो कर रहे हैं उसके पीछे सिद्धांत सही लगता है, लेकिन कोड को देखे बिना, समस्या को समझना लगभग असंभव होगा ...

ऐसा लगता है जैसे आप आईबी में दृश्य पर एक लेबल डाल रहे हैं और कोशिश कर रहे हैं अपने हेडर व्यू के रूप में इसका उपयोग करें - जो चीजों को करने का उचित तरीका नहीं है। आप viewForHeaderInSection उपयोग नहीं कर रहे हैं, तो वह एक कोशिश .. देना इस तरह:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UILabel *lbl; 
    lbl.text = @"Header for The Only Section"; 
    //define other properties for the label - font, shadow, highlight, etc... 

    return lbl; 
} 
+2

यह काम नहीं करेगा, क्योंकि आपने लेबल शुरू नहीं किया है। आपको '[[UILabel alloc] initWithFrame: someframe] की आवश्यकता है। फिर, आप इसकी 'टेक्स्ट' संपत्ति सेट कर सकते हैं। –

25

सुनिश्चित नहीं हैं कि आप गलत क्या कर रहे हैं, लेकिन यहां कुछ उदाहरण कोड मदद कर सकता है कि (क post पर से है मेरे ब्लॉग):

#define SectionHeaderHeight 40 


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    if ([self tableView:tableView titleForHeaderInSection:section] != nil) { 
     return SectionHeaderHeight; 
    } 
    else { 
     // If no section header title, no section header needed 
     return 0; 
    } 
} 


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section]; 
    if (sectionTitle == nil) { 
     return nil; 
    } 

    // Create label with section title 
    UILabel *label = [[[UILabel alloc] init] autorelease]; 
    label.frame = CGRectMake(20, 6, 300, 30); 
    label.backgroundColor = [UIColor clearColor]; 
    label.textColor = [UIColor colorWithHue:(136.0/360.0) // Slightly bluish green 
           saturation:1.0 
           brightness:0.60 
             alpha:1.0]; 
    label.shadowColor = [UIColor whiteColor]; 
    label.shadowOffset = CGSizeMake(0.0, 1.0); 
    label.font = [UIFont boldSystemFontOfSize:16]; 
    label.text = sectionTitle; 

    // Create header view and add label as a subview 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, SectionHeaderHeight)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+0

मेरे पास काला "बार" मुद्दा है लेकिन केवल लैंडस्केप मोड में स्विच करते समय और पोर्ट्रेट पर वापस जाने पर यह ठीक नहीं होता है। मुझे "ठीक" करने के लिए अभी तक एकमात्र रास्ता मिल गया है, यह टेबलव्यू पर रीलोडडाटा को कॉल करके है, लेकिन यह कुछ बहुत ही ठीक करने के लिए कॉल करने के लिए एक बहुत ही भारी विधि है ... – kdbdallas

+1

शब्द यह नहीं बता सकते कि आपके कोड नमूने ने मुझे कितना समय बचाया है:) **धन्यवाद!!!! –

1

मैं एक ही मुद्दा था और काफी सोचा नहीं किया है क्यों काला बार ..

लेकिन, बजाय प्रतिनिधि तरीकों में शीर्ष लेख और पाद दृश्य प्रदान की, अगर मैं सेट वैल tableView.tableHeaderView और tableView.tableFooterView के लिए ues, यह सब ठीक है!

+0

मेरे लिए काम किया। मेरा हेडर पारदर्शी और पंक्तियों के शीर्ष पर था। – casey

0

3.1.3 पसंद नहीं करता [UIColor clearcolor]; अपने टेबलव्यू

0

के समान पृष्ठभूमि रंग का उपयोग करने का प्रयास करें, मैंने डेटासोर्स लोड होने के बाद रीफ्रेश करते समय समान व्यवहार देखा। मैंने देखा कि यह जिस तरह से मैं तालिका दृश्य ताज़ा कर रहा था।

//[self loadView]; this caused the section header to go black. 
[self.tableView reloadData]; // this works! 
संबंधित मुद्दे