2011-03-02 13 views
15

भरने के लिए स्वचालित रूप से सामग्री का आकार बदलता है मैंने इंटरफेस बिल्डर के माध्यम से UITableView के हेडर सेक्शन में UIButton जोड़ा है और कुछ मामलों में बटन तक पहुंच को हटाना चाहते हैं। मैंने .hidden = TRUE प्रॉपर्टी का उपयोग करने का प्रयास किया है, लेकिन यह दृश्य के बटन को छुपाता है, जिससे पीछे एक सफेद जगह छोड़ दी जाती है। मैं UITableView के हेडर को प्रोग्रामेटिक रूप से कैसे हटा सकता हूं और हटाए गए हेडर क्षेत्र को भरने के लिए तालिका की सामग्री स्वचालित रूप से आकार बदलती है?प्रोग्रामेटिक रूप से UITableView के शीर्षलेख को हटा दें और हटाए गए क्षेत्र

उत्तर

49

यदि आप तालिका के शीर्षलेख दृश्य को हटाना चाहते हैं, तो बस myTable.tableHeaderView प्रॉपर्टी को शून्य पर सेट करें। यदि आप वास्तव में है एक अनुभाग शीर्ष लेख है, तो आप viewForHeaderInSection विधि से शून्य लौट सकते हैं और फोन [myTableView reloadData]

+0

:

func removeSectionHeader() { removeHeader = true self.tableView.reloadData() } 

फिर जब मेरी tableView पुन: लोड यह इस tableView प्रतिनिधि विधि कॉल करेंगे वह चाल है! धन्यवाद! (जब मैं अधिक प्रतिनिधि अंक प्राप्त करता हूं, तो मैं वोट दूंगा!) – code007

+1

सरल और सीधा, बहुत बहुत धन्यवाद। – Felipe

+0

ओपी में सहायक होगा प्रश्न के शीर्षक को अद्यतन कर सकता है ताकि यह स्पष्ट हो सके कि वह सेक्शन हेडर के बारे में बात कर रहा है, न कि तालिका दृश्य शीर्षलेख। – wuf810

20

करने की जरूरत है आप भी कर सकता है:

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

इस के लिए मेरे (एकल काम करने के लिए लगता है) सेक्शन हेडर और reloadData की आवश्यकता से बचाता है।

ध्यान दें कि:

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

अभी भी कहा जाता है, लेकिन इसकी वापसी मान पर ध्यान नहीं दिया जा रहा है।

+1

धन्यवाद @ मार्टिनस्टैनले ने यह ठीक काम किया और मुझे 'reloadData' विधि को कॉल करने की आवश्यकता नहीं थी। –

+1

यदि हेडर वर्तमान में स्क्रीन पर है, तो मुझे संदेह है कि 'रीलोडडाटा' को कॉल करने से कुछ भी बदलेगा, भले ही आप सशर्त रूप से ऊंचाई से 0 वापस लौटें, फ़ोरहेडर इनसेक्शन, क्योंकि तालिका को हेडर-स्क्रीन आने तक हेडर की जांच करने की आवश्यकता नहीं होती है और आता है फिर से स्क्रीन पर वापस। कॉलिलिंग 'रीलोडडाटा' सभी मामलों में सेक्शन हेडर को हटाने की गारंटी देने का एकमात्र तरीका है। – Bogatyr

+0

इसे 0 पर सेट करने से संसाधनों को बर्बाद कर दिया गया है। दृश्य से शून्य वापस करें हेडर टेबल को छिपाने से बेहतर है। –

0

मैं एक बूलियन संपत्ति removeHeader बुलाया बनाया और फिर जब कभी मैं अपने हैडर निकालना चाहते हैं मैं फोन:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     if removeHeader { 
      return 0.0 
     } else { 
      let height = self.tableView.sectionHeaderHeight 
      return height 
     } 
    } 
संबंधित मुद्दे