सवाल UITableView अनुभाग शीर्षक प्रोग्रामेटिक रूप से (आईफोन / आईपैड) कैसे सेट करें?


मैंने एक बनाया है UITableView इंटरफ़ेस बिल्डर का उपयोग कर storyboardsUITableView के साथ सेटअप है static cells और कई अलग-अलग वर्ग।

मेरे पास जो मुद्दा है वह यह है कि मैं अपने ऐप को कई अलग-अलग भाषाओं में स्थापित करने की कोशिश कर रहा हूं। ऐसा करने के लिए मुझे बदलने में सक्षम होना चाहिए UITableView किसी भी तरह से खंड शीर्षक।

कृपया कोई मेरी मदद कर सकता है? आदर्श रूप से मैं इस मुद्दे का उपयोग कर संपर्क करना चाहता हूं IBOutlets हालांकि मुझे संदेह है कि इस मामले में यह भी संभव नहीं है। किसी भी सलाह और सुझावों की वास्तव में सराहना की जाएगी।

अग्रिम में धन्यवाद।


98
2018-05-08 20:07


मूल




जवाब:


एक बार जब आप अपना UITableView कनेक्ट कर लेंगे delegate तथा datasource अपने नियंत्रक के लिए, आप ऐसा कुछ कर सकते हैं:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSString *sectionName;
    switch (section)
    {
        case 0:
            sectionName = NSLocalizedString(@"mySectionName", @"mySectionName");
            break;
        case 1:
            sectionName = NSLocalizedString(@"myOtherSectionName", @"myOtherSectionName");
            break;
        // ...
        default:
            sectionName = @"";
            break;
    }    
    return sectionName;
}

258
2018-05-08 20:27



क्या आप निश्चित रूप से कॉल करते हैं यदि आप स्थैतिक कोशिकाओं का उपयोग करके कहानी बोर्ड सेट करते हैं? ऐसा लगता है कि इसे बुलाया जा रहा है। - drewish
आह ऐसा लगता है कि आपको लागू करना है numberOfSectionsInTableView:tableView: इसे बुलाओ - drewish
स्थैतिक कोशिकाओं के लिए, (अधिकतर) अन्य सभी डेटा स्रोत विधियां लागू नहीं की जाती हैं। - wcochran
@drewish numberOfSectionsInTableView:tableView: स्थिर कोशिकाओं के लिए आईबी में लागू किया गया। - wcochran
ड्रिश सही है - अगर आप कार्यान्वित करते हैं numberOfSectionsInTableView: , तो शीर्षक विधि को स्टोरीबोर्ड कहा जाता है और ओवररी करता है। चूंकि यह एक स्थिर तालिकादृश्य है, इसलिए इसे एक विधि के साथ ओवरराइड करना ठीक है जो निरंतर संख्या @wcochran देता है - GreatWiz


अगर आप स्विफ्ट में कोड लिख रहे हैं तो यह इस तरह का एक उदाहरण दिखेगा

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
    switch section
    {
        case 0:
            return "Apple Devices"
        case 1:
            return "Samsung Devices"
        default:
            return "Other Devices"
    }
}

13
2017-12-02 10:58





UITableViewDataSource विधि का उपयोग करें

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

9
2018-05-08 20:12





titleForHeaderInSection एक है UITableView की प्रतिनिधि विधि इसलिए अनुभाग लिखने के हेडर टेक्स्ट को निम्नानुसार लागू करने के लिए,

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
              return @"Hello World";
}

5
2017-11-15 04:44





ध्यान दें कि -(NSString *)tableView: titleForHeaderInSection: UITableView द्वारा नहीं कहा जाता है - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section UITableView के प्रतिनिधि में लागू किया गया है;


2
2017-08-29 10:00





- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
   return 45.0f; 
//set height according to row or section , whatever you want to do!
}

सेक्शन लेबल टेक्स्ट सेट हैं।

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *sectionHeaderView;

        sectionHeaderView = [[UIView alloc] initWithFrame:
                             CGRectMake(0, 0, tableView.frame.size.width, 120.0)];


    sectionHeaderView.backgroundColor = kColor(61, 201, 247);

    UILabel *headerLabel = [[UILabel alloc] initWithFrame:
                            CGRectMake(sectionHeaderView.frame.origin.x,sectionHeaderView.frame.origin.y - 44, sectionHeaderView.frame.size.width, sectionHeaderView.frame.size.height)];

    headerLabel.backgroundColor = [UIColor clearColor];
    [headerLabel setTextColor:kColor(255, 255, 255)];
    headerLabel.textAlignment = NSTextAlignmentCenter;
    [headerLabel setFont:kFont(20)];
    [sectionHeaderView addSubview:headerLabel];

    switch (section) {
        case 0:
            headerLabel.text = @"Section 1";
            return sectionHeaderView;
            break;
        case 1:
            headerLabel.text = @"Section 2";
            return sectionHeaderView;
            break;
        case 2:
            headerLabel.text = @"Section 3";
            return sectionHeaderView;
            break;
        default:
            break;
    }

    return sectionHeaderView;
}

2
2018-05-30 11:22





अन्य उत्तरों के साथ कुछ भी गलत नहीं है लेकिन यह एक प्रदान करता है   गैर-प्रोग्रामेटिक समाधान जो परिस्थितियों में उपयोगी हो सकता है   एक छोटी स्थिर तालिका है। लाभ यह है कि कोई भी व्यवस्थित कर सकता है   स्टोरीबोर्ड का उपयोग कर स्थानीयकरण। कोई निर्यात जारी रख सकता है   XLIFF फ़ाइलों के माध्यम से एक्सकोड से स्थानीयकरण। एक्सकोड 9 में भी कई हैं स्थानीयकरण करने के लिए नए उपकरण आसान।

(मूल)

मुझे एक समान आवश्यकता थी। मेरे मुख्य.स्टोरीबोर्ड (बेस) में स्थैतिक कोशिकाओं के साथ एक स्थिर तालिका थी। .String फ़ाइलों का उपयोग कर अनुभाग शीर्षक को स्थानीयकृत करने के लिए उदा। Main.strings (जर्मन) बस स्टोरीबोर्ड में सेक्शन का चयन करें और ऑब्जेक्ट आईडी नोट करें

Object ID 

बाद में अपने स्ट्रिंग फ़ाइल पर जाएं, मेरे मामले में Main.strings (जर्मन) और अनुवाद डालें:

"MLo-jM-tSN.headerTitle" = "Localized section title";

अतिरिक्त संसाधन:


2
2017-09-20 12:21





मैं पिछले संस्करणों के बारे में नहीं जानता UITableView प्रोटोकॉल, लेकिन आईओएस 9 के रूप में, func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? का हिस्सा है UITableViewDataSource मसविदा बनाना।

   class ViewController: UIViewController {

      @IBOutlet weak var tableView: UITableView!

      override func viewDidLoad() {
         super.viewDidLoad()
         tableView.dataSource = self
      }
   }

   extension ViewController: UITableViewDataSource {
      func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
         return "Section name"
      }
   }

आपको घोषित करने की आवश्यकता नहीं है delegate डेटा के साथ अपनी तालिका भरने के लिए।


0
2017-07-31 14:43