UITableView में अनुभाग हेडर के लिए डिफ़ॉल्ट ऊंचाई


125

मैं अपने UITableView में पहले हेडर की ऊंचाई निर्धारित करना चाहता हूं। अन्य हेडर के लिए मैं चाहता हूं कि वे डिफ़ॉल्ट ऊंचाई पर रहें। नीचे दिए गए कोड में "someDefaultHeight" के स्थान पर मैं क्या मूल्य / स्थिर रख सकता हूं?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

धन्यवाद


जब तक आप खुश नहीं होते तब तक आप विभिन्न मूल्यों की कोशिश क्यों नहीं करते?
डैनियल

4
@ डैनियल - यदि ऐप्पल ने कभी डिफ़ॉल्ट पंक्ति ऊंचाई मान को बदलने का फैसला किया है, तो मुझे यह सुनिश्चित करने की आवश्यकता है कि मेरा ऐप इस मूल्य (कुछ मनमानी राशि) को हार्ड कोड न करे। यदि यह कहीं घोषित किया जाता है, तो इस जानकारी को स्थिर से खींचना सबसे अच्छा है।
लगाम

जवाबों:


204

IOS 5.0 के बाद आप अधिकांश प्रतिनिधि विधियों में UITableViewAutomaticDimension को वापस कर सकते हैं। प्रलेखन पृष्ठ के नीचे इसकी

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

1
हम्म .. मेरे लिए UITableViewAutomaticDimensionरिटर्न -1(हार्डकॉस्ट कास्ट) और मैं अपने सभी वर्गों में नहीं देखता UITableView
स्काईविंदर

क्यों UITableViewAutomaticDimensionदिखाता है -1 जब NSLogयह
एस 1 यू

30
यह तभी काम करता है जब आप क्षेत्र का उपयोग करते हैं: - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)sectionयदि आप - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionविधि को लागू कर रहे हैं , तो यह काम नहीं करता है।
सुपरसाईन

2
यह ध्यान देने योग्य है, यदि आप इसे लागू करते हैं और प्रतिनिधि पद्धति का अनुमान लगाते हैं और UITableViewAutomaticDimensionइसे वापस करते हैं तो इसकी ऊंचाई शून्य होगी।
सैम सोफेस

4
@SuperSaiyen - यह viewForHeaderInSectionआपके साथ काम करने की आवश्यकता हैestimatedSectionHeaderHeight
रॉबर्ट

48

मेरे ऐप में डिफॉल्ट्स की जाँच करने से ऐसा लगता है कि एक समूहीकृत तालिका के लिए डिफ़ॉल्ट 22 की ऊँचाई है और एक गैर-समूह वाली तालिका के लिए डिफ़ॉल्ट 10 की ऊँचाई है।

यदि आप अपने टेबलव्यू पर प्रॉपर्टी सेक्शन की कीमत की जांच करते हैं तो आपको बताना चाहिए।


1
धन्यवाद ... मैं इसे इसके लिए हार्ड कोड दूंगा। हालांकि मैं चाहता हूं कि इस मूल्य के लिए एक निरंतरता थी।
लगाम

3
आपके पास ये पीछे हैं। UITableViewStyleGrouped22 है और UITableViewStylePlain10. है
माइकल ग्रिनिच

25

वास्तव में चाल है :)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

2
मुझे लगता है कि आप का मतलब है return [self.tableView sectionHeaderHeight];, या बेहतर अभी तक return [tableView sectionHeaderHeight];,। हालांकि, दोनों मेरे लिए -1 लौटते हैं, शायद इसलिए क्योंकि मैं नीब या स्टोरीबोर्ड का उपयोग नहीं कर रहा हूं।
jk7

7

पूर्णता की खातिर: iOS7 + में समूहीकृत शैली अनुभाग हेडर के लिए ऊंचाई 55.5पहली और 38निम्न हेडर के लिए है। (DCIntrospect के साथ मापा गया)


4

स्विफ्ट 4.2 के लिए आपको UITableView.automaticDimension वापस करना चाहिए


2

मुझे यकीन नहीं है कि सही उत्तर यहां क्या है, लेकिन 10 या 22 आईओएस 5 में समूहीकृत तालिका दृश्य के लिए सही ऊंचाई प्रतीत नहीं होती है। मैं इस प्रश्न के आधार पर 44 का उपयोग कर रहा हूं , और यह कम से कम मोटे तौर पर प्रतीत होता है सही ऊंचाई।


2

डिफ़ॉल्ट ऊंचाई पाने के लिए, बस इसे superसंभालने दें:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}

[super tableView:tableView heightForHeaderInSection:section];मेरे लिए 0 लौटाता है, शायद इसलिए मैं नीब या स्टोरीबोर्ड का उपयोग नहीं कर रहा हूं।
jk7

1
यह तभी काम करता है जब आप UITableViewController को उप-वर्ग कर रहे हों।
वालेस

-1

यह काम कर जाना चाहिए

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}

मुझे लगता है कि आपका मतलब हैreturn [self sectionHeaderHeight];
TMB

@TMB [self sectionHeaderHeight];एक त्रुटि पैदा करता है। क्या आपका मतलब था [tableView sectionHeaderHeight];?
jk7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.