स्टोरीबोर्ड के साथ कस्टम टेबल व्यू अनुभाग हेडर और पाद को कैसे लागू करें


176

स्टोरीबोर्ड का उपयोग किए बिना हम बस UIViewकैनवास पर खींच सकते हैं , इसे बाहर रख सकते हैं और फिर इसे tableView:viewForHeaderInSectionया tableView:viewForFooterInSectionप्रतिनिधि विधियों में सेट कर सकते हैं ।

हम इसे एक स्टोरीबोर्ड के साथ कैसे पूरा करते हैं जहां हम कैनवास पर एक यूआईवीयूवाई को खींच नहीं सकते हैं

जवाबों:


91

मुझे पता है कि यह सवाल आईओएस 5 के लिए था, लेकिन भविष्य के पाठकों के लाभ के लिए, ध्यान दें कि प्रभावी आईओएस 6 अब हम dequeueReusableHeaderFooterViewWithIdentifierइसके बजाय उपयोग कर सकते हैं dequeueReusableCellWithIdentifier

तो viewDidLoad, registerNib:forHeaderFooterViewReuseIdentifier:या तो कॉल करें registerClass:forHeaderFooterViewReuseIdentifier:। फिर viewForHeaderInSection, कॉल करें tableView:dequeueReusableHeaderFooterViewWithIdentifier:। आप इस API के साथ एक सेल प्रोटोटाइप का उपयोग नहीं करते हैं (यह या तो NIB- आधारित दृश्य या प्रोग्रामेटिक रूप से बनाया गया दृश्य है), लेकिन यह हटाए गए हेडर और पाद के लिए नया API है।


13
आहें एक शर्म की बात है कि एक निब के बजाय एक आद्य सेल का उपयोग के बारे में इन दोनों को साफ जवाब 5 वोट के अधीन हैं, और "प्रोटो कोशिकाओं के साथ यह हैक" जवाब ऊपर 200 से ऊपर है
Benjohn

5
अंतर यह है कि Tieme के हैक से आप एक ही स्टोरीबोर्ड में अपना डिज़ाइन बना सकते हैं और एक अलग
Xib का

क्या आप किसी तरह से अलग एनआईबी फ़ाइल का उपयोग करने से बच सकते हैं और इसके बजाय स्टोरीबोर्ड का उपयोग कर सकते हैं?
वन

@ फॉरेगर - इस बिंदु पर नहीं। यह स्टोरीबोर्ड टेबल व्यू में एक अजीब चूक है, लेकिन यह वही है जो यह है। अगर आप चाहते हैं कि प्रोटोटाइप कोशिकाओं के साथ उस कुल्डी हैक का उपयोग करें, लेकिन व्यक्तिगत रूप से, मैं हेडर / पाद लेख विचारों के लिए एनआईबी की झुंझलाहट के साथ डालता हूं।
रोब

2
केवल यह कहते हुए कि यह "पुराना" पर्याप्त मजबूत नहीं है, IMHO। स्वीकृत उत्तर इस तथ्य को प्राप्त करने का एक कठिन तरीका है कि आप हेडर और पाद लेख दृश्यों के लिए प्रोटोटाइप सेल नहीं कर सकते। लेकिन मुझे लगता है कि यह केवल गलत है, क्योंकि यह माना जाता है कि हेडर और फ़ुटर्स की डीकेस्टिंग सेल के डीकेसीज़िंग के समान काम करती है (जो हेडर / फ़ुटर्स के लिए एक नए एपीआई की उपस्थिति का सुझाव देती है) ऐसा नहीं हो सकता है। स्वीकृत उत्तर एक रचनात्मक वर्कअराउंड है जो कि iOS 5 में वापस समझा जा सकता है, लेकिन, iOS 6 और बाद में, हेडर / पाद पुन: उपयोग के लिए स्पष्ट रूप से डिज़ाइन किए गए एपीआई का उपयोग करना सबसे अच्छा है।
रॉब

384

बस अपने सेक्शन हेडर और / या पाद लेख के रूप में एक प्रोटोटाइप सेल का उपयोग करें।

  • एक अतिरिक्त सेल जोड़ें और इसमें अपने वांछित तत्व डालें।
  • कुछ विशिष्ट के लिए पहचानकर्ता सेट करें (मेरे मामले में सेक्शनहेडर)
  • लागू tableView:viewForHeaderInSection:विधि या tableView:viewForFooterInSection:विधि
  • [tableView dequeueReusableCellWithIdentifier:]हेडर प्राप्त करने के लिए उपयोग करें
  • tableView:heightForHeaderInSection:विधि लागू करें ।

(स्क्रीनशॉट देखें)

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    static NSString *CellIdentifier = @"SectionHeader"; 
    UITableViewCell *headerView = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (headerView == nil){
        [NSException raise:@"headerView == nil.." format:@"No cells with matching CellIdentifier loaded from your storyboard"];
    }
    return headerView;
}  

संपादित करें: शीर्ष लेख शीर्षक (टिप्पणी प्रश्न) को कैसे बदलें:

  1. हेडर सेल में एक लेबल जोड़ें
  2. लेबल का टैग एक विशिष्ट संख्या पर सेट करें (उदाहरण 123)
  3. अपनी tableView:viewForHeaderInSection:विधि में कॉल करके लेबल प्राप्त करें:
    UILabel *label = (UILabel *)[headerView viewWithTag:123]; 
  1. अब आप एक नया शीर्षक सेट करने के लिए लेबल का उपयोग कर सकते हैं:
    [label setText:@"New Title"];

7
पार्टी के लिए देर हो चुकी है, लेकिन अनुभाग हेडर दृश्य पर क्लिक को अक्षम करने के लिए, बस सेल को वापस भेजें। viewForHeaderInSection विधि में (किसी भी कस्टम यूआईवाईवाई को जोड़ने की आवश्यकता नहीं है)।
पौलव्स

3
@PaVVon मैंने अपने नवीनतम प्रोजेक्ट में ऐसा करने की कोशिश की, लेकिन अगर आप ऐसा करते हैं कि बस अपने एक हेडर पर लॉन्गप्रेस करने की कोशिश करते हैं और यह दुर्घटनाग्रस्त हो जाएगा
ऑनर्स

13
IOS 6.0 में, dequeueReusableHeaderFooterViewWithIdentifierपेश किया गया है, और अब इस उत्तर पर पसंद किया जाता है। लेकिन इसका सही तरीके से इस्तेमाल करने से अब और कदम उठाने होंगे। मेरे पास गाइड @ samwize.com/2015/11/06/… है
samwize

3
UITableViewCells का उपयोग करके अपना सेक्शनHeaderViews न बनाएं, यह अप्रत्याशित व्यवहार पैदा करेगा। इसके बजाय एक UIView का उपयोग करें।
प्रशंसा

4
कृपया UITableViewCellहेडर दृश्य के रूप में कभी भी उपयोग न करें । आपको विज़ुअल ग्लिट्स को डीबग करना बहुत मुश्किल होगा - हेडर कभी-कभी गायब हो जाते हैं क्योंकि सेल कैसे ख़राब हो जाते हैं और आप घंटों देख रहे होंगे कि ऐसा क्यों होता है जब तक आपको एहसास UITableViewCellनहीं होता है कि UITableViewहेडर में नहीं है ।
raven_raven

53

IOS 6.0 और इसके बाद के संस्करण में, नई dequeueReusableHeaderFooterViewWithIdentifierएपीआई के साथ चीजें बदल गई हैं ।

मैंने एक गाइड लिखा है (आईओएस 9 पर परीक्षण किया गया है), जिसे इस तरह संक्षेप में प्रस्तुत किया जा सकता है:

  1. उपवर्ग UITableViewHeaderFooterView
  2. उपवर्ग दृश्य के साथ निब बनाएँ, और 1 कंटेनर दृश्य जोड़ें जिसमें शीर्षलेख / पाद लेख में अन्य सभी दृश्य हों
  3. में Nib रजिस्टर करें viewDidLoad
  4. शीर्षक / पाद लेख को वापस लाने के लिए लागू करें viewForHeaderInSectionऔर उपयोग dequeueReusableHeaderFooterViewWithIdentifierकरें

2
इस जवाब के लिए धन्यवाद जो एक हैक नहीं है, और चीजों को करने का सही तरीका है। इसके अलावा, मुझे UITableViewHeaderFooterVIew से परिचित कराने के लिए धन्यवाद। Btw, गाइड सिर्फ उत्कृष्ट है! :)
रोबोरिस

स्वागत हे। ऐप्पल द्वारा तालिका या संग्रह दृश्य के लिए हेडर / पाद को लागू करना बहुत अच्छी तरह से प्रलेखित नहीं है। कल ही मैं स्टोरीबोर्ड के माध्यम से डिजाइन करने के लिए गेट्टर हेडर में फंस गया था ।
samwize

1
यह सुनिश्चित करने के लिए शीर्ष रेटेड उत्तर होना चाहिए!
बेन विलियम्स

क्या आप बता सकते हैं कि xib के बजाय स्टोरीबोर्ड के माध्यम से ऐसा कैसे किया जा सकता है? ऐसा करते समय, मैं सफलतापूर्वक समाप्त हो जाता हूं, लेकिन मेरे यूबिलैब शून्य हैं।
बंकरदार

22

मैंने इसे स्टोरीबोर्ड में एक प्रोटोटाइप सेल का उपयोग करके iOS7 में काम किया। मेरे पास मेरे कस्टम सेक्शन के हेडर दृश्य में एक बटन है जो कि स्टोरीबोर्ड में स्थापित एक सेगमेंट को ट्रिगर करता है।

Tieme के समाधान के साथ शुरू करें

जैसा कि पेड्रोएम बताते हैं, इसके साथ समस्या यह है कि अनुभाग हेडर को टैप करने से अनुभाग का पहला सेल चयनित हो जाता है।

जैसा कि पॉल वॉन बताते हैं, यह पूरे सेल के बजाय सेल के contentView को वापस करके तय किया गया है।

हालाँकि, जैसा कि ऑनर्स बताते हैं, कहा जाता है कि सेक्शन हेडर पर एक लंबा प्रेस ऐप को क्रैश कर देगा।

इसका उपाय यह है कि contentView से किसी भी जेस्चर को पहचाना जाए।

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
     static NSString *CellIdentifier = @"SectionHeader";
     UITableViewCell *sectionHeaderView = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

     while (sectionHeaderView.contentView.gestureRecognizers.count) {
         [sectionHeaderView.contentView removeGestureRecognizer:[sectionHeaderView.contentView.gestureRecognizers objectAtIndex:0]];
     }

     return sectionHeaderView.contentView; }

यदि आप अपने सेक्शन के हेडर दृश्यों में इशारों का उपयोग नहीं कर रहे हैं, तो यह थोड़ा हैक करने के लिए लगता है।


2
आप सही हे। मैंने अभी-अभी इसका परीक्षण किया है और इसका काम किया है, इसलिए मैंने अपने पोस्ट ( hons82.blogspot.it/2014/05/uitableviewheader-done-right.html ) को अपने शोध के दौरान मिले सभी संभावित समाधानों को अपडेट किया । इस फिक्स के लिए Thx बहुत
Hons

अच्छा जवाब ...
थैंक्स

13

यदि आप स्टोरीबोर्ड का उपयोग करते हैं तो आप अपने हेडर दृश्य को लेआउट करने के लिए टेबलव्यू में एक प्रोटोटाइप सेल का उपयोग कर सकते हैं। एक अद्वितीय आईडी सेट करें और देखेंफॉरहेडइनइन्फेक्शन आप उस आईडी के साथ सेल को धोखा दे सकते हैं और इसे एक यूआईईवीवाई में डाल सकते हैं।


12

यदि आपको इसके स्विफ्ट कार्यान्वयन की आवश्यकता है तो स्वीकृत उत्तर पर निर्देशों का पालन करें और फिर आप में UITableViewController निम्नलिखित विधियों को लागू करें:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return tableView.dequeueReusableCell(withIdentifier: "CustomHeader")
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 75
}

2
किसी कारण से यह मेरे लिए काम नहीं करता था जब तक कि मैंने ऊँचाई को बढ़ाया नहीं है।
एंटाल्पी

यह बहुत पुराना कोड है। आपको एक और उत्तर पोस्ट करना चाहिए!
JZ।

मैं अटक गया था क्योंकि मुझे नहीं पता था कि मुझे ऊंचाई से आगे बढ़ना होगा। धन्यवाद @Entalpi
guijob

1
@JZ। अपने स्विफ्ट 3 उदाहरण में आप निम्नलिखित self.tableView.dequeueReusableHeaderFooterView और स्विफ्ट 2 के साथ deque: self.tableView.dequeueReusableCellWithIdentifier में अंतर है?
व्रुतिन राठौड़

1
इससे मेरा बट बच गया! शीर्ष लेख में एक ऊँचाई जोड़ने से यह दृश्यमान हो जाता है।
CRey

9

मैं जिस समाधान के साथ आया था, मूल रूप से वही समाधान है जिसका उपयोग स्टोरीबोर्ड की शुरुआत से पहले किया गया था।

एक नई, खाली इंटरफ़ेस क्लास फ़ाइल बनाएँ। कैनवास पर एक UIView खींचें, वांछित के रूप में लेआउट।

निब को मैन्युअल रूप से लोड करें, व्यूफॉरहेडरइन्सेक्शन या व्यूफोरफुटेरइन्सेक्शन डेलिगेट मेथड्स में उपयुक्त हेडर / फुटर सेक्शन पर असाइन करें।

मुझे उम्मीद थी कि Apple ने स्टोरीबोर्ड के साथ इस परिदृश्य को सरल बनाया और एक बेहतर या सरल समाधान की तलाश में रहा। उदाहरण के लिए कस्टम टेबल हेडर और फुटर जोड़ने के लिए सीधे आगे हैं।


अच्छी तरह से सेब अगर आप हेडर विधि के रूप में स्टोरीबोर्ड सेल का उपयोग करते हैं :) stackoverflow.com/questions/9219234/#11396643
Tieme

2
सिवाय इसके कि केवल प्रोटोटाइप कोशिकाओं के लिए काम होता है, न कि स्थैतिक कोशिकाओं के लिए।
जीन-डेनिस मुएस

1
पिक्सेट का उपयोग करना वास्तव में एक आसान उपाय है ; आप शीर्ष लेख का संदर्भ प्राप्त किए बिना काफी अनुकूलन कर सकते हैं। आपको बस इसे लागू करना है tableView:titleForHeaderInSection, जो एक-लाइनर है।
जॉन स्टारर देवर

5
यह वास्तविक समाधान है ... दुर्भाग्य से इसके शीर्ष पर नहीं है, इसलिए मुझे इसे खोजने में थोड़ा समय लगा। मैंने उन समस्याओं का संक्षेप में उल्लेख
ऑनर्स

यह उससे भी आसान है, बस खींचें और छोड़ें।
रिकार्डो

5

जब आप सेल की सामग्री लौटाते हैं तो आपको 2 समस्याएं होंगी:

  1. इशारों से संबंधित दुर्घटना
  2. आप contentView का पुन: उपयोग नहीं करते (हर बार viewForHeaderInSectionकॉल करने पर , आप नई सेल बना रहे हैं)

उपाय:

तालिका शीर्ष लेख \ पाद लेख के लिए आवरण वर्ग। यह सिर्फ कंटेनर है UITableViewHeaderFooterView, जो विरासत में मिला है , जो सेल को अंदर रखता है

https://github.com/Magnat12/MGTableViewHeaderWrapperView.git

अपने UITableView में क्लास रजिस्टर करें (उदाहरण के लिए, viewDidLoad में)

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerClass:[MGTableViewHeaderWrapperView class] forHeaderFooterViewReuseIdentifier:@"ProfileEditSectionHeader"];
}

आपके UITableViewDelegate में:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    MGTableViewHeaderWrapperView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"ProfileEditSectionHeader"];

    // init your custom cell
    ProfileEditSectionTitleTableCell *cell = (ProfileEditSectionTitleTableCell * ) view.cell;
    if (!cell) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"ProfileEditSectionTitleTableCell"];
        view.cell = cell;
    }

    // Do something with your cell

    return view;
}

2

मैं शीर्ष लेख / पाद लेख विचारों को आलसी बनाने के लिए निम्न कार्य करता था:

  • स्टोरीबोर्ड में अनुभाग शीर्षलेख / पाद लेख के लिए एक फ़्रीफ़ॉर्म दृश्य नियंत्रक जोड़ें
  • हेडर के लिए सभी सामग्री को व्यू कंट्रोलर में हैंडल करें
  • तालिका दृश्य नियंत्रक में अनुभाग हेडर / फ़ुटर्स के साथ देखने वाले नियंत्रकों के लिए एक परस्पर सारणी प्रदान करता है [NSNull null]
  • ViewForHeaderInSection / viewForFooterInSection में यदि व्यू कंट्रोलर अभी तक मौजूद नहीं है, तो इसे स्टोरीबोर्ड्स के साथ बनाएं तात्कालिक व्यू कॉंट्रोलरविथआईडेंटिफायर, इसे एरे में याद रखें और व्यू कंट्रोलर व्यू देखें

2

मैं एक ऐसे परिदृश्य में परेशानी में पड़ा हूं, जहां हेडर को सभी उचित चरणों को करने के बावजूद कभी भी पुन: उपयोग नहीं किया गया था।

एक टिप नोट के रूप में हर कोई जो खाली वर्गों (0 पंक्तियों) को दिखाने की स्थिति को प्राप्त करना चाहता है, को चेतावनी दी जाती है कि:

dequeueReusableHeaderFooterViewWithIdentifier, हेडर का पुन: उपयोग नहीं करेगा, जब तक कि आप कम से कम पंक्ति में नहीं लौटते

आशा करता हूँ की ये काम करेगा


1

डेमन के सुझाव का पालन ​​करने के लिए , यहां बताया गया है कि कैसे मैंने हेडर का चयन एक सामान्य संकेतक की तरह सामान्य पंक्ति के रूप में किया।

मैंने हेडर के प्रोटोटाइप सेल में UIButton (उपवर्ग नाम "ButtonWithArgument") से उप बटन जोड़ा और शीर्षक पाठ को हटा दिया (मूल शीर्षक "टेक्स्ट" शीर्षक पाठ में एक और UILabel है)

इंटरफ़ेस बिल्डर में बटन

फिर बटन को पूरे हेडर दृश्य में सेट करें, और एवरियो की चाल के साथ एक प्रकटीकरण संकेतक जोड़ा

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    static NSString *CellIdentifier = @"PersonGroupHeader";
    UITableViewCell *headerView = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(headerView == nil)
    {
        [NSException raise:@"headerView == nil, PersonGroupTableViewController" format:[NSString stringWithFormat:@"Storyboard does not have prototype cell with identifier %@",CellIdentifier]];
    }

    //  https://stackoverflow.com/a/24044628/3075839
    while(headerView.contentView.gestureRecognizers.count)
    {
        [headerView.contentView removeGestureRecognizer:[headerView.contentView.gestureRecognizers objectAtIndex:0]];
    }


    ButtonWithArgument *button = (ButtonWithArgument *)[headerView viewWithTag:4];
    button.frame = headerView.bounds; // set tap area to entire header view
    button.argument = [[NSNumber alloc] initWithInteger:section]; // from ButtonWithArguments subclass
    [button addTarget:self action:@selector(headerViewTap:) forControlEvents:UIControlEventTouchUpInside];

    // https://stackoverflow.com/a/20821178/3075839
    UITableViewCell *disclosure = [[UITableViewCell alloc] init];
    disclosure.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    disclosure.userInteractionEnabled = NO;
    disclosure.frame = CGRectMake(button.bounds.origin.x + button.bounds.size.width - 20 - 5, // disclosure 20 px wide, right margin 5 px
          (button.bounds.size.height - 20) / 2,
          20,
          20);
    [button addSubview:disclosure];

    // configure header title text

    return headerView.contentView;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 35.0f;
}

-(void) headerViewTap:(UIGestureRecognizer *)gestureRecognizer;
{
    NSLog(@"header tap");
    NSInteger section = ((NSNumber *)sender.argument).integerValue;
    // do something here
}

ButtonWithArgument.h

#import <UIKit/UIKit.h>

@interface ButtonWithArgument : UIButton
@property (nonatomic, strong) NSObject *argument;
@end

ButtonWithArgument.m

#import "ButtonWithArgument.h"
@implementation ButtonWithArgument
@end

1

आपको Tieme के समाधान को आधार के रूप में उपयोग करना चाहिए, लेकिन viewWithTag:अन्य फिशियल दृष्टिकोणों के बारे में भूल जाना चाहिए , इसके बजाय अपने हेडर को पुनः लोड करने का प्रयास करें (उस अनुभाग को पुनः लोड करके)।

इसलिए जब आप सभी फैंसी AutoLayoutसामान के साथ अपने कस्टम सेल-हेडर दृश्य को बैठ गए , तो बस इसे समाप्त करें और अपने सेट अप के बाद सामग्री दृश्य वापस करें, जैसे:

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
 static NSString *CellIdentifier = @"SectionHeader"; 

    SettingsTableViewCell *sectionHeaderCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    sectionHeaderCell.myPrettyLabel.text = @"Greetings";
    sectionHeaderCell.contentView.backgroundColor = [UIColor whiteColor]; // don't leave this transparent

    return sectionHeaderCell.contentView;
}  

1

हेडर व्यू व्यू पर आधारित समाधान के बारे में क्या कहता है:

class myViewController: UIViewController {
    var header: [UILabel] = myStringArray.map { (thisTitle: String) -> UILabel in
        let headerView = UILabel()
            headerView.text = thisTitle
    return(headerView)
}

प्रतिनिधि में अगला:

extension myViewController: UITableViewDelegate {
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return(header[section])
    }
}

1
  1. में सेल जोड़ें StoryBoardऔर सेट करेंreuseidentified

    sb

  2. कोड

    class TP_TaskViewTableViewSectionHeader: UITableViewCell{
    }
    

    तथा

    संपर्क

  3. उपयोग:

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let header = tableView.dequeueReusableCell(withIdentifier: "header", for: IndexPath.init(row: 0, section: section))
        return header
    }
    


2
फिर क्या रास्ता है?
प्रमोद शुक्ला

1

लेस्ज़लो जवाब के समान लेकिन आप टेबल कोशिकाओं और अनुभाग शीर्ष लेख सेल दोनों के लिए एक ही प्रोटोटाइप सेल का पुन: उपयोग कर सकते हैं। नीचे दिए गए पहले दो फ़ंक्शंस को अपने UIViewController subClass में जोड़ें

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "DataCell") as! DataCell
    cell.data1Label.text = "DATA KEY"
    cell.data2Label.text = "DATA VALUE"
    return cell
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 75
}

// Example of regular data cell dataDelegate to round out the example
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "DataCell", for: indexPath) as! PlayerCell

    cell.data1Label.text = "\(dataList[indexPath.row].key)"
    cell.data2Label.text = "\(dataList[indexPath.row].value)"
    return cell
}

0

यहाँ स्विफ्ट में @Vitaliy Gozhenko का जवाब है
सारांशित करने के लिए आप एक UITableViewHeaderFooterView बनाएंगे जिसमें एक UITableViewCell होगा। यह UITableViewCell "dequeuable" होगा और आप इसे अपने स्टोरीबोर्ड में डिज़ाइन कर सकते हैं।

  1. UITableViewHeaderFooterView वर्ग बनाएं

    class CustomHeaderFooterView: UITableViewHeaderFooterView {
    var cell : UITableViewCell? {
        willSet {
            cell?.removeFromSuperview()
        }
        didSet {
            if let cell = cell {
                cell.frame = self.bounds
                cell.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleWidth]
                self.contentView.backgroundColor = UIColor .clearColor()
                self.contentView .addSubview(cell)
            }
        }
    }
    
  2. अपने दृश्य में इस वर्ग के साथ अपने टेबलव्यू को प्लग करें

    self.tableView.registerClass(CustomHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "SECTION_ID")
    
  3. जब एक अनुभाग हेडर के लिए पूछते हैं, तो एक CustomHeaderFooterView को हटा दें, और इसमें एक सेल डालें

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = self.tableView.dequeueReusableHeaderFooterViewWithIdentifier("SECTION_ID") as! CustomHeaderFooterView
        if view.cell == nil {
            let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell")
            view.cell = cell;
        }
    
        // Fill the cell with data here
    
        return view;
    }
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.