TableViewController, iOS - स्विफ्ट में अतिरिक्त खाली कोशिकाओं को कैसे हटाएं


118

नमस्ते, मेरे पास TableViewControllerदो स्थिर कोशिकाएं हैं, हालांकि प्रदर्शित होने पर, यह दो स्थिर कोशिकाओं को दिखाता है, और फिर टेबलव्यू के लिए अन्य सभी खाली कोशिकाओं को दिखाता है। हालाँकि मैं उन कोशिकाओं को प्रदर्शित नहीं करना चाहता क्योंकि वे बेकार हैं। मैं दो स्थैतिक सेल के अलावा बाकी कोशिकाओं को कैसे छिपाऊं?

जवाबों:


403

अपने viewDidLoad()फ़ंक्शन में कोड की इस पंक्ति को जोड़ें:

tableView.tableFooterView = UIView()

4
लघु और प्रभावी! आकर्षण की तरह काम किया!
yogipriyo

6
इसका क्या मतलब है? क्या आप विस्तृत कर सकते हैं?
जयप्रकाश दुबे

यह उत्तर अभी भी स्विफ्ट 3 में मान्य है। इसके अलावा, यदि आप टेबलव्यू बैकग्राउंड कलर को मुख्य व्यू बैकग्राउंड कलर के समान सेट करते हैं, तो यह ऐसा लगेगा जैसे कि फूटर चला गया है।
मीका मोंटोया

वहाँ के लिए एक समान समाधान है NSTableView? यह एक नहीं है tableFooterView
ixany

SWIFT 3.0 के साथ बहुत अच्छा काम करता हैtableView.tableFooterView = UIView()
Marcelo Gracietti

19

अपना UITableView चुनें, विशेषता निरीक्षक पर जाएं और शैली को समूहीकृत करें।

यहां छवि विवरण दर्ज करें


7

इसे जोड़ने के लिए, पंक्तियों tableFooterViewको UIView()हटाने के लिए सेटिंग का कारण यह है क्योंकि आप UIView()संपत्ति के लिए एक खाली ऑब्जेक्ट सेट कर रहे हैं। Apple प्रलेखन के अनुसार:

var tableFooterView: UIView?

इसलिए एक खाली यूआईवीयूवाई () सेट करना इस संपत्ति के लिए आपके डेटा के नीचे कुछ भी प्रदर्शित नहीं करेगा।

आप tableFooterViewडिफ़ॉल्ट मान पर रीसेट करके खाली पंक्तियों को वापस ला सकते हैं , जैसे:

tableView.tableFooterView = nil

2
क्षमा करें, लेकिन यह हैक की तरह नहीं दिखता है?
AOY

2
नहींं, यह इसे करने का एक पूरी तरह से वैध तरीका है। यदि आप एक कस्टम टेबलफ़ुटेरव्यू सेट करना चाहते हैं, तो टेबलफ़ुटेरव्यू पर सेट करने से पहले, आप एक कस्टम यूआईईवीईवाई बनाएंगे। फिर इसे शून्य पर रीसेट करना बस इसे अपने डिफ़ॉल्ट मूल्य पर वापस करना है।
टोस्ट

समझा। धन्यवाद) यह मेरे लिए थोड़ा अजीब लगता है क्योंकि मैं स्विफ्ट में नया हूँ
AOY

6

स्थापना tableFooterViewविचारों की तरह अतिरिक्त सेल निकाल देना चाहिए।

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }

3

आप स्टोरीबोर्ड में इसे केवल टेबल व्यू के पाद क्षेत्र में एक दृश्य खींचकर भी प्राप्त कर सकते हैं, और फिर संपत्ति निरीक्षक का उपयोग करके क्रमशः इसकी ऊंचाई और पृष्ठभूमि का रंग 1 और स्पष्ट कर सकते हैं।

(यह मानता है कि आप या तो किसी कारण से समूह शैली सेटिंग का उपयोग नहीं कर सकते हैं या नहीं करना चाहते हैं। अन्यथा, बस करें)।


3

4 स्विफ्ट 4 घोड़े के जवाब पर विस्तृत, सबसे पहले अपने स्टोरीबोर्ड में अपने टेबल व्यू से ड्रैग कंट्रोल, अपने व्यू कंट्रोलर क्लास में जाएं और टेबल व्यू नामक एक आउटलेट बनाएं।

@IBOutlet weak var tableView: UITableView!

फिर, आपके व्यू कंट्रोलर में आपका व्यूडीडलड कुछ इस तरह दिखना चाहिए:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}


2

यदि आप UITableViewsअपने ऐप में सभी के लिए पंक्तियों को निकालना चाहते हैं , तो इस तरह से एक एक्सटेंशन जोड़ें:

स्विफ्ट 5.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}

1
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

इस कोड को viewWillAppearविधि के अंदर कॉल करें । और काम करेंगे


1

अपने " ओवरराइड func viewDidLoad () " या "ओवरराइड func viewWillAppear (_ एनिमेटेड: बूल)" फ़ंक्शन में कोड जोड़ें ।

tblOutletName.tableFooterView = UIView ()


0

बस जोड़ें:

tableView.tableFooterView = UIView()

स्पष्टीकरण:

यह पूरी तरह से वैध है और पूरी तरह से तेजी से काम करता है। 3. जब से आप संपत्ति के लिए एक खाली यूआईवाईवाईई () ऑब्जेक्ट सेट कर रहे हैं, टेबलफुटेरव्यू को यूआईवीवाई () सेट करना पंक्तियों को हटा देता है।


-2

Abobe awer सही है। हम इसे जोड़कर प्राप्त कर सकते हैं

tableView.tableFooterView = UIView() // to remove extra cells in tableView

-3

मैंने tableview.tableFooterView = UIView () की कोशिश की और यह मेरे काम नहीं आया। मैं एक कस्टम TableViewViewCell का उपयोग कर रहा हूं, शायद इसीलिए।

मुझे एक हैक थो मिला। मेरी फंक संख्या मेंOORowsInSection

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourArrayClass.count - 1
}

और इससे मेरा अतिरिक्त रिक्त कस्टम UITableViewCell प्रदर्शित नहीं होता है। बेशक इसके अतिरिक्त खाली एक। मैं कुछ और सेल जोड़कर इसका परीक्षण करूंगा। संदर्भ के लिए, मैं स्विफ्ट 3, फायरबेस, एक कस्टम सेल वर्ग का उपयोग कर रहा हूं, सेलफोररौट फ़ंक्शन के अंदर।


यह सरणी में अंतिम आइटम प्रदर्शित नहीं करेगा।
एलारकोइरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.