UITableView के बजाय UICollectionView का उपयोग कब करें?


92

मैंने पाया कि iOS6 में पेश UICollectionViewकिए गए एक उन्नत संस्करण की तरह है UITableView, लेकिन मुझे UICollectionViewइसके बजाय कब चुनना चाहिए UITableView?

अभी भी ऐप्स का उपयोग कर रहे हैं UITableView, अगर UICollectionViewकुछ भी UITableViewकर सकते हैं, तो लोग अभी भी क्यों उपयोग करते हैं UITableView? जहाँ तक प्रदर्शन का सवाल है, क्या कोई अंतर है?

धन्यवाद!

जवाबों:


75

यह आवश्यकताओं पर निर्भर करता है। एप्लिकेशन प्रवाह कैसे निर्धारित करता है कि किस प्रकार के UI को एप्लिकेशन में एकीकृत किया जाए।

लोग मुख्य रूप से UICollectionviewग्रिड में दिखाए गए कई चित्रों के साथ UI के प्रकार बनाने के लिए उपयोग करते हैं । यह जटिल तर्क का उपयोग करेगा UITableView, लेकिन इसके साथ UICollectionview, यह आसान होगा।

उपयोग करते समय UICollectionview, आपको चयनित आइटम मान प्राप्त करके टैग या अन्य चीजों के साथ बटन सेट करने की आवश्यकता नहीं है। आप बस प्राप्त कर सकते हैं -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPathऔर UITableViewDelegate:

`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`

आपको आइटम के बजाय चयनित पंक्ति मिलती है, इसलिए ग्रिड या संशोधित आइटम बनाने के लिए, उपयोग UICollectionviewकरना सबसे अच्छा है।

प्रत्येक आइटम के लिस्टिंग विवरण के लिए, लोग उपयोग करते हैं UITableViewक्योंकि यह प्रत्येक आइटम पर अधिक जानकारी दिखाता है।

Apple डॉक्स:

UICollectionView क्लास संदर्भ

UICollectionView वर्ग डेटा आइटमों के ऑर्डर किए गए संग्रह का प्रबंधन करता है और अनुकूलन योग्य लेआउट का उपयोग करके उन्हें प्रस्तुत करता है। संग्रह दृश्य तालिका दृश्य के समान सामान्य कार्य प्रदान करते हैं सिवाय इसके कि संग्रह दृश्य केवल एकल-स्तंभ लेआउट से अधिक का समर्थन करने में सक्षम है। संग्रह दृश्य बहु-स्तंभ ग्रिड, टाइलयुक्त लेआउट, परिपत्र लेआउट और कई और अधिक को लागू करने के लिए उपयोग किए जा सकने वाले अनुकूलन योग्य लेआउट का समर्थन करते हैं। यदि आप चाहें तो आप संग्रह दृश्य के लेआउट को गतिशील रूप से भी बदल सकते हैं।

UITableView क्लास संदर्भ

तालिका दृश्य एकल कॉलम में वस्तुओं की सूची प्रदर्शित करता है। UITableView UIScrollView का एक उपवर्ग है, जो उपयोगकर्ताओं को तालिका के माध्यम से स्क्रॉल करने की अनुमति देता है, हालांकि UITableView केवल ऊर्ध्वाधर स्क्रॉल करने की अनुमति देता है। तालिका के अलग-अलग मदों से युक्त कोशिकाएं UITableViewCell ऑब्जेक्ट हैं; UITableView तालिका की दृश्य पंक्तियों को खींचने के लिए इन वस्तुओं का उपयोग करता है। कक्ष में सामग्री-शीर्षक और छवियां होती हैं और दाहिने किनारे, सहायक दृश्य के पास हो सकती हैं। मानक गौण विचार प्रकटीकरण संकेतक या विस्तार प्रकटीकरण बटन हैं; पूर्व डेटा पदानुक्रम में अगले स्तर तक ले जाता है और बाद में चयनित आइटम के विस्तृत दृश्य की ओर जाता है। एक्सेसरी व्यूज़ फ्रेमवर्क कंट्रोल भी हो सकते हैं, जैसे स्विच और स्लाइडर्स, या कस्टम व्यू हो सकते हैं। तालिका दृश्य एक संपादन मोड में प्रवेश कर सकते हैं जहां उपयोगकर्ता तालिका की पंक्तियों को सम्मिलित कर सकते हैं, हटा सकते हैं और पुन: क्रमित कर सकते हैं।


3
मैं विस्तार के संदर्भ में सोचता हूं - संग्रह दृश्य स्कोर अधिक !!
दैत्यप्रेम

मैं सोच रहा हूं कि जब किसी अतिरिक्त जटिलता के बिना संग्रहण की सभी जरूरतों को पूरा किया जा सकता है, तब टेबलव्यू का उपयोग करने की आवश्यकता क्यों होती है, लेकिन लचीलापन प्रदान करता है (यदि किसी ग्राहक को लेआउट को एक से अधिक स्तंभों तक विस्तारित करने की आवश्यकता है, तो यह संग्रह के साथ ऐसा करने के लिए बहुत सीधे होगा। )। मैं हमेशा डिफ़ॉल्ट रूप से टेबल्स का उपयोग कर रहा था, लेकिन अब मुझे संदेह है कि क्या इसके बजाय संग्रह से स्विच करने के लिए समझ में आता है। क्या मैं कुछ भूल रहा हूँ?
हमें

मुख्य आवश्यकता पर आधारित है। संग्रह दृश्य देर से परिचय देता है और तब तक सभी देव ग्रिड और उस तरह का सामान बनाने के लिए तालिका का उपयोग करते हैं। लेकिन अब टेबलव्यू जैसे लेआउट बनाने के लिए उपयोग करने के लिए एक दिन संग्रह संग्रह सबसे अधिक आबादी वाला है। के रूप में अच्छी तरह से इसलिए मैं अपने बुरे विचार संग्रह
साक्षात्कार

आपके विवरण के लिए धन्यवाद।
ssowri1

47

यहाँ मेरा मापदंड है:

  • यदि कोई UITableView इसे कर सकता है, तो इसका उपयोग करें

  • यदि UITableView को इसे करने के लिए बहुत सारे कोड की आवश्यकता है या यह बिल्कुल नहीं कर सकता है, तो UICollectionView का उपयोग करें।

आपको निर्णय लेने से पहले UITableView पर प्रतिबंधों पर विचार करना होगा: यह एक एकल स्तंभ है। और आप केवल कोशिकाओं को अनुकूलित कर सकते हैं, लेकिन अनुभाग पृष्ठभूमि और ऐसे नहीं। इसलिए यदि आपके पास बिना किसी अतिरिक्त तामझाम के चीजों की एक सीधी-सीधी सूची है - जो कि एक bog मानक iOS दृश्य की तरह दिखता है, तो मूल रूप से - तब UITableview का उपयोग करें। यदि आपके पास कस्टम इनसेट या प्रत्येक खंड के चारों ओर एक बॉर्डर है, तो UICollectionView का उपयोग करें।

मैं वास्तव में सभी चीजों के लिए UICollectionView पर विचार कर रहा हूं क्योंकि यह बहुत महंगा है जब आप अपने विचार को टेबल व्यू के रूप में विकसित करना शुरू करते हैं, तो बाद में पता चलता है कि यह एक ऐसा काम नहीं कर सकता है जिसे आपको करने की आवश्यकता है। 1 हाथ का अनुभव;)

दो के साथ और भी अधिक अनुभव के बाद संपादित करें: अंतिम पैराग्राफ को अस्वीकृत करें। UICollectionView को UITableView की तरह काम करने के लिए बहुत सारे बॉयलरप्लेट कोड की आवश्यकता होती है। UICollectionView का उपयोग केवल तब करें जब वास्तव में जरूरत हो। ;)


3
बिल्कुल सही जवाब मैं देख रहा था! यह अधिक मतदान होना चाहिए!
रक अप्पादेव २

2
अपने व्यक्तिगत अनुभव और सिफारिशों को उजागर करना बहुत मददगार है!
हवाई

1
मैंने निश्चित रूप से इसे पढ़कर चकित कर दिया, अच्छी तरह से कहा! UITableView केवल कुछ के रूप में अनुकूलन योग्य है, सिवाय इसके कि यदि आप कतार में ऑफसेट एनिमेशन जोड़ते हैं तो यह दुर्घटनाग्रस्त हो जाएगा। मैं आपके जवाब को एनिमेशन गाइड के साथ जाने की सलाह दूंगा, और कुछ खुदाई व्यक्तिगत रूप से सीखने के लिए कि कितने आंतरिक विचार मौजूद हैं ताकि आप उन्हें ताज़ा कर सकें, और "मैं विभाजक रेखा को अदृश्य नहीं बना सकता" मुद्दा आपको अंततः आश्चर्यचकित नहीं करेगा। किसी को। स्क्रॉल दृश्य, यूआईबटन, और टेबल व्यू में छिपे हुए दृश्य तब तक सबसे अनुकूलन को फेंक देते हैं जब तक आप जानते हैं कि वे चीजों में छिपे हुए हैं
स्टीफन जे

33

सरल सूचियों के लिए और आगे / पीछे की ओर नेविगेट, उपयोग करें UITableView

यदि आपको कस्टमाइज़ेबिलिटी का उच्च स्तर चाहिए, तो उपयोग करें UICollectionView

आम तौर पर, सॉफ्टवेयर विकास में, यह उस दृष्टिकोण को चुनना सबसे अच्छा होता है जो "सबसे सरल संभव बात" का प्रतिनिधित्व करता है।

EDIT: iOS 14 के रूप में, UICollectionViewअब सूचियों को भी कर सकता है और अब अनुशंसित दृष्टिकोण है। अधिक जानकारी और कार्यान्वयन विवरण के लिए WWDC20 के इस सत्र को देखें: https://developer.apple.com/videos/play/wwdc2020/10026/


14

मेरे विचार के अनुसार संग्रह व्यू और टेबल व्यू के बीच मुख्य अंतर यह है

TABLEVIEW -> केवल एक कॉलम में वस्तुओं की सूची दिखाएं।

संकलन-दृश्य -> ​​कई कॉलम में वस्तुओं की सूची दिखाएं।

आशा है इससे आपकी मदद होगी।


11

यदि आप iPhone के लिए UITableView चुनते हैं, तो सुनिश्चित करें कि आपने पहले अपनी iPad रणनीति पर विचार किया है। यदि आप iPad-विशिष्ट लेआउट चाहते हैं, तो आप चाहते हैं कि एकल-स्तंभ लेआउट ग्रिड बन जाए।


8

हालांकि इसकी आवश्यकता नहीं है, मैं हमेशा एक संग्रह का उपयोग करता हूं। इस तरह मैं आसानी से अनुकूलित कर सकता हूं कि अलग-अलग प्रस्तावों के लिए मेरे संग्रह कैसे प्रस्तुत किए जाते हैं। एक प्लस यह है कि भविष्य में रिफैक्टरिंग करने पर यह नए प्रकार की कोशिकाओं को जोड़ने के लिए तैयार है।

मुझे टेबलव्यू का कोई मतलब नहीं दिखता। तालिका का प्रतिनिधित्व करने के लिए संग्रह दृश्य का उपयोग करना बहुत सरल है। IMO।


4

यह पूरी तरह से इस बात पर निर्भर करता है कि आपका डेटा कैसे दिखाया जाए। जैसा कि ऊपर कई लोगों ने बताया है, यदि आपको केवल एक सेट डेटा की आवश्यकता है और वह भी जटिल नहीं है, तो जाएंUITableView अन्य उपयोग के लिए जाएं UICollectionView

UICollectionView अनुकूलन अनुकूल है।

यदि आप कई सेल हाइट्स के साथ काम कर रहे हैं, तो जाएं UICollectionView


4

मेरे व्यक्तिगत अनुभव से दोनों तत्वों की तुलना केवल शिथिल रूप से की जानी चाहिए।

tableview

TableView एक यूआई तत्व है जिसे सूची प्रारूप में डेटा दिखाने के लिए डिज़ाइन किया गया है। कुछ कार्यक्षमता है जो UITableView के साथ मानक के रूप में आती है, जैसे:

  • गौण दृश्य
  • सेल चयन शैली
  • संपादन शैली (हटाएं और संपादित करें बटन)।

उपरोक्त तत्व सूची प्रारूप में प्रदर्शित और इंटरैक्ट करते समय डेटा की उपयोगिता को बढ़ाते हैं। जैसे ईमेल देखना।

CollectionView

एक संग्रह दृश्य एक यूआई तत्व है जिसे कस्टम लेआउट का उपयोग करके सामग्री दिखाने के लिए डिज़ाइन किया गया है (आमतौर पर कुछ भी जो सूची नहीं है)। कलेक्शन व्यू पूरी तरह से बीस्पोक लेआउट शैलियों में डेटा प्रदर्शित करने की कार्यक्षमता में सुधार करता है और साथ ही मक्खी पर गतिशील रूप से लेआउट बदलता है। कुछ उदाहरण निम्न हैं:

  • क्षितिज सूची
  • फोटो गैलरी
  • थंबनेल के विचार
  • carousels
  • डायल
  • तत्वों को मानचित्र पर रखना
  • आदि।

संग्रह दृश्य कई चयनों के लिए भी अनुमति देते हैं।

निष्कर्ष

जैसा कि आप ऊपर से देख सकते हैं, दोनों के पास पूरी तरह से अलग-अलग उपयोग के मामले हैं और अपने स्वयं के विशिष्ट डेटा सेट के विकास और उपयोगिता को बढ़ाने के लिए डिज़ाइन किए गए हैं।

यदि आप फॉलोइन इंटरैक्शन के साथ एक सूची शैली में कुछ भी प्रदर्शित करने के लिए देख रहे हैं: - जोड़ना - हटाना - फिर से ऑर्डर करना तब UITableView बॉक्स से सीधे समर्थन प्रदान करके इस प्रक्रिया को सरल करेगा।

कुछ भी हो, आपको अधिक लचीलेपन के साथ कलेक्शन व्यू के लाभों का लाभ उठाना चाहिए।


2

दोनों आवश्यकताओं पर निर्भर हैं। टेबल व्यू में कई प्रकार के संपादन परिदृश्यों का समर्थन है। यह समर्थन संग्रह दृश्य कक्षाओं में लागू नहीं किया गया है। यदि आप इन तरीकों पर निर्भर एक टेबल व्यू से परिवर्तित कर रहे हैं, तो कलेक्शन व्यू में थोड़ा अतिरिक्त भारी उठाने की अपेक्षा करें। संग्रह दृश्य अनुभाग हेडर को दृश्य के भीतर कहीं भी रखा जा सकता है। और UITableView को चयनित आइटम मान प्राप्त करके टैग या अन्य चीज़ों के साथ बटन सेट करने की आवश्यकता नहीं है।


1

व्यवहार में, हर कोई UICollectionView का उपयोग करता है जो मैं भर में आया हूं, जब उन्हें केवल UITableView की आवश्यकता होती है। "यह एक आयामी है। यह ऊपर और नीचे जाता है। आप लेआउट और डेटा के लिए अनावश्यक प्रतिनिधि पद्धति क्यों जोड़ रहे हैं?"। मैंने एक बार एक अतिरिक्त 2 घंटे बिताए, जिससे स्टार्टअप को यह पता लगाने में मदद मिली कि उनका UICollectionViewCell क्यों स्खलित हो गया क्योंकि मालिक, जिसने एनिमेशन मैनुअल नहीं पढ़ा था, न ही HIG, और न ही UICollectionView गाइड, ने इसका उपयोग करने और चर हाइट्स और एनिमेशन जोड़ने का फैसला किया। कहने की जरूरत नहीं है, उन्होंने एक गैर-व्यावसायिक-महत्वपूर्ण मुद्दे पर खुद को एक सिरदर्द और बहुत अधिक समय गंवा दिया, वह केवल टेबल सेल का उपयोग करके बचा सकता था, क्योंकि कोई अतिरिक्त लेआउट प्रतिनिधि + निब नहीं है।

मुझे यह सीधे प्राप्त करने दें, मैं UICollectionView के लिए सभी हूँ, जब आपके डेटा और डिस्प्ले को इसकी आवश्यकता है। वे बहुत शक्तिशाली हैं। लेकिन व्यवहार में, मैंने देखा है कि ज्यादातर लोग उन्हें सूचियों पर उपयोग कर रहे हैं।

यह एक और दोष लाता है। वे छोटी, निरंतर सूचियों पर भी उपयोग किए जाते हैं जो कभी भी नहीं बदलेंगे। इस मामले में, बस एक एक्सिब बनाओ। या एक कस्टम दृश्य लिखें जो उन्हें स्टैक करता है। क्यों? क्योंकि आपको बटन या स्विच के साथ 5 सेट के लिए मेमोरी मैनेजमेंट की आवश्यकता नहीं है। यदि वे बदल सकते हैं, तो हाँ, एक सूची का उपयोग करें। यदि आप भौतिकी चाहते हैं, तो UICollectionView कुछ शांत प्रभावों के साथ अच्छी तरह से काम करता है। लेकिन क्या आपको वास्तव में 5 लेबल के लिए 5 प्रतिनिधि विधियों और एक लेआउट सिस्टम को जोड़ने की आवश्यकता है जो कभी भी स्थानांतरित नहीं होंगे?

इसके अलावा, मैं यह नहीं भूल रहा हूं कि iOS में भी एक देशी स्टैकिंग दृश्य है। मैं यह कभी नहीं पा सकता कि मैं कैसा चाहता हूं, भले ही मैं 2D और एनीमेशन सिस्टम में काफी माहिर हूं, इसलिए मैं बिल्ट-इन का उपयोग कभी नहीं करता।

मैं बस इतना कह रहा हूं कि अपनी आवश्यकताओं को परिभाषित करें। हो सकता है कि आपको इन दोनों में से किसी की आवश्यकता न हो, यदि आपका UI आइटमों को जोड़ने / हटाने और स्वयं को ताज़ा नहीं कर रहा है। या हो सकता है कि आप कार्ड गेम लिखना चाहते हैं और उन्हें वस्तुतः एक मेज पर फेंकना चाहते हैं, फिर इसके लेआउट गाइड के लिए भौतिकी प्रणाली के साथ UICollectionView का उपयोग करें।


0

अपनी आवश्यकता के आधार पर हम TableView या CollectionView चुन रहे हैं।

उदाहरण:

फोन के लिए संपर्क tableView सबसे अच्छा विकल्प है।

फोटो गैलरी के लिए, संग्रह दृश्य सबसे अच्छा विकल्प होगा।


7
जब भी मैं सहमत हूं कि यह जिस तरह से रखा गया है वह एक राय की तरह लगता है और मुझे लगता है कि यह सिर्फ एक टिप्पणी होनी चाहिए, जवाब नहीं।
पोपी

0

मेरी वर्तमान परियोजना में यह मुद्दा था। जिसका उपयोग करना है। मेरे मामले में यह वास्तव में सरल था। मुझे दोनों की जरूरत थी। UITableView की तरह दिखने और इसके परिवर्तन / लेआउट को बदलने के लिए मुझे अपने दृष्टिकोण की आवश्यकता थी। तो, UICollectionView का उपयोग किया गया था। मैं हर जगह UITableView का उपयोग करता हूं मुझे किसी अतिरिक्त अनुकूलन की आवश्यकता नहीं है। चूंकि UiTableView एक डिफ़ॉल्ट लेआउट के साथ आता है जिसमें चित्र और पाठ शामिल हैं - मैं इसे सरलता के लिए उपयोग करता हूं।


0

हमारी आवश्यकता के आधार पर हम UITableView या UICollection दृश्य चुनते हैं।

यदि हम ग्रिड प्रकार में चित्र या आइटम प्रदर्शित करना चाहते हैं या यदि हमें अधिक कस्टमाइज़ेबिलिटी की आवश्यकता है तो हम UICollectionview का उपयोग करते हैं।

विवरण और उप-श्रेणियों के साथ प्रत्येक आइटम को सूचीबद्ध करने के लिए हम UITableView का उपयोग करते हैं।

UICollectionView: UICollectionView वर्ग डेटा आइटमों के ऑर्डर किए गए संग्रह का प्रबंधन करता है और अनुकूलन योग्य लेआउट का उपयोग करके उन्हें प्रस्तुत करता है। संग्रह दृश्य तालिका दृश्य के समान सामान्य फ़ंक्शन प्रदान करते हैं सिवाय इसके कि संग्रह दृश्य केवल एकल-स्तंभ लेआउट से अधिक का समर्थन करने में सक्षम है।

UITableView: एक तालिका दृश्य एकल कॉलम में वस्तुओं की सूची प्रदर्शित करता है। UITableView UIScrollView का एक उपवर्ग है, जो उपयोगकर्ताओं को तालिका के माध्यम से स्क्रॉल करने की अनुमति देता है, हालांकि UITableView केवल ऊर्ध्वाधर स्क्रॉल करने की अनुमति देता है।


0

ग्रिड व्यू डिस्प्ले के लिए मेरे विचार के अनुसार यूआई कलेक्शन व्यू का उपयोग करें। अन्य सूची दृश्य यूआईटेबल व्यू का उपयोग करें


0

व्यक्तिगत रूप से मुझे लगता है कि UICollectionView अधिकांश काम कर सकता है जो UITableview कर सकते हैं। ठीक है, एक ही समय में, यह उपयोग करने के लिए अधिक जटिल है।

मेरा सुझाव है कि भविष्य में आपके प्रबंधक की आवश्यकताओं को पूरा करने के लिए आप टेबल व्यू के रूप में UICollectionView का उपयोग करें।

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