2011-12-28 14 views
13

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

उत्तर

19

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

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

एक अन्य नोट यह है कि नई स्टेटिक टेबल व्यू सेल (आईओएस 5 का हिस्सा) का उपयोग करते समय, आपको एक टेबल व्यू कंट्रोलर का उपयोग करना होगा।

+0

'UITableViewController' का उपयोग करते समय उसी स्क्रीन पर अन्य नियंत्रणों के साथ' UITableView' को आकार देने/साझा करने की कमी का उल्लेख करने में अच्छा बिंदु। खैर, दूसरी तरफ, कोई भी अन्य नियंत्रणों के लिए हमेशा 'tableHeaderView' और 'tableFooterView' भाग का उपयोग कर सकता है। – Till

+0

सच है, लेकिन जब एक स्थिर खोजबार (जो स्क्रॉल नहीं करता है) जैसे सामान कर रहे हैं, तो तालिका दृश्य के साथ एक वीसी अच्छी तरह से काम करता है। –

4

UITableViewControllerUIViewController का उप-वर्ग है। यह पहले से ही मानता है कि आपके रूट व्यू के रूप में UITableView होगा, इसलिए आपके पास पहले से कोड से एक तालिका दृश्य (self.tableView) तक पहुंच है। यह UITableViewDataSource और UITableViewDelegate प्रोटोकॉल लागू करता है। यह आपको ओवरराइड करने के लिए कई तरीकों से भी आपको देता है। यह आपको XIB फ़ाइल पर निर्भर नहीं होने देता है, क्योंकि आप पहले ही जानते हैं कि आपके पास क्या होगा (UITableView रूट व्यू के रूप में)।

UITableView सिर्फ UIView है, आम तौर पर आप प्रोटोकॉल मैं आदेश को भरने के लिए (डेटा स्रोत) है और यह (प्रतिनिधि) के साथ काम में अपने UIViewController में ऊपर संदर्भित की है, का अनुपालन करना होगा, और आप शायद एक IBOutlet बनाने के लिए आपके UITableView के लिए।

एक तरफ आपके पास गति है लेकिन आप दूसरे पथ के रूप में लचीले नहीं हैं। दूसरी ओर आप विपरीत है।

+0

आपका उत्तर आम तौर पर सही है लेकिन मेरे स्वाद के लिए थोड़ा आईबी केंद्रित है। बस स्पष्ट करने के लिए, निश्चित रूप से केवल आईबीओटलेट्स की आवश्यकता होती है यदि आप इंटरफेसबिल्डर का उपयोग अपने विचारों को बिछाने के लिए करते हैं। यह कार्य निश्चित रूप से सादा कोड का उपयोग करके भी निश्चित रूप से (कभी-कभी बेहतर) पूरा किया जा सकता है। – Till

+0

जब भी मैं कर सकता हूं, मैं 'इंटरफेसबिल्डर' का उपयोग करना पसंद करता हूं, यह तेज़ है और यह कोड को साफ रखता है। बेशक आप अपने कोड में 'UITableView' घोषित कर सकते हैं और इसे केवल' UIView 'जोड़ सकते हैं, हालांकि मुझे यह पसंद नहीं है। – Peres

संबंधित मुद्दे