2009-03-08 12 views
11

क्या कोई मुझे UITableViewController के UITableView पर फायदे बता सकता है। आम तौर पर मैं नियंत्रक का उपयोग करता हूं लेकिन मूल तालिका दृश्य बहुत अधिक लचीला लगता है।UITableView बनाम UITableViewController

उत्तर

6

मुझे नहीं लगता कि आप अपना खुद का प्रश्न समझते हैं।

UITableViewController नियंत्रक है।

UITableView देखें।

एक अन्य 0 की तुलना में बेहतर नहीं है, वे पूरी तरह से अलग-अलग चीजें हैं, जो पूरी तरह से अलग-अलग चीजों के लिए उपयोग किए जाते हैं।

मैं मॉडल-व्यू-कंट्रोलर पैटर्न सीखने में कुछ समय बिताता हूं ताकि कोको और आईफोन एसडीके प्रचलित हो।

The Model-View-Controller Design Pattern

+9

मुझे यकीन है कि अगर ओपी इस का मतलब है या नहीं नहीं कर रहा हूँ, लेकिन मैं क्या मतलब गया हो सकता है करने के लिए इसी तरह की एक सवाल है: एक UITableViewController एक UIViewController है कि एक UITableView शामिल बनाम का उपयोग करने के लाभ/कमियां क्या हैं ? – Bogatyr

+13

मैं आपका जवाब नीचे दे रहा हूं क्योंकि यह उसका प्रश्न है। मेरा भि। किसने बिल्ली को 14 तक वोट दिया ..? वे पूरी तरह से अलग नहीं हैं - वे संबंधित हैं और इसलिए सवाल मान्य है। आप कभी UITableView subclass कब होगा? TableViewController एक तालिका दृश्य की तुलना में उपयोग किया जाता है? मुझे लगता है कि मुझे जवाब पता है .. – badweasel

+0

.. लेकिन अगर मुझे पता था कि मुझे पता था कि मैं इसे खोज नहीं पाया होता। – badweasel

0

ऊपर दिया गया लिंक देता है एक "पृष्ठ नहीं मिला।" कुछ कारणों से, यहां तक ​​कि सही link हाइपरलिंक होने पर "पृष्ठ नहीं मिला" देता है (शायद ऐप्पल अपनी डेवलपर साइट में लिंक करने की अनुमति नहीं देता है)।

प्रासंगिक जानकारी ढूंढने के लिए, ऐप्पल के डेवलपर कनेक्शन (http://developer.apple.com/index.html) पर जाएं और "कोको मॉडल-व्यू-कंट्रोलर डिज़ाइन पैटर्न" पर खोजें।

परिणामों की तालिका में, "कोको बुनियादी बातों गाइड: कोको डिजाइन पैटर्न" का चयन करें। उस पृष्ठ पर बाईं ओर सामग्री की तालिका को तब तक स्क्रॉल करें जब तक आप आइटम "मॉडल-व्यू-कंट्रोलर डिज़ाइन पैटर्न" नहीं देखते। उस विशेष डिजाइन पैटर्न के बारे में अधिक जानकारी पढ़ने के लिए उस आइटम का चयन करें।

2

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

13

मैं हमेशा UITableView का उपयोग करता हूं। मैंने UITableViewController का कभी भी उपयोग नहीं किया।

UITableViewController का उपयोग भ्रमित कर रहा है। प्रत्येक नियंत्रक को कंटेनर नियंत्रकों को छोड़कर एक स्क्रीन करना होता है।

ठीक है, UITableViewController एक नियंत्रक है और अधिकांश समय, एक तालिका दृश्य केवल एकमात्र चीज नहीं है।

आप प्रलेखन को देखें, तो: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html

UITableViewController UITableView की तुलना में बहुत कम नए इंटरफ़ेस प्रदान करते हैं। इनमें से कोई भी आवश्यक नहीं है।

– initWithStyle: 

(डुह?मैं निब में मेरी tableView शुरू करने और मैं वैसे भी एक बहुत अनुकूलित)

तालिका व्यवहार

clearsSelectionOnViewWillAppear property 
का विन्यास

तालिका देखें

tableView property 

(मूल tableView) हो रही है

(ठीक है, केवल ViewWillAppear पर कुछ कोड डालें)

रिफ्रेशिंग तालिका देखें

refreshControl property 

[tableView पुनः लोड]?

तो आप देखते हैं,

तो जब तक आप अपने कोड neater देखो करने के लिए (और नहीं भी बहुत कुछ) चाहते हैं, तो UITableViewController उपयोग करने के लिए, कि मैं के बारे में पता कोई कारण नहीं है।

+0

केवल UITableViewController में स्थिर सामग्री हो सकती है। https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW20 –

+0

इसके अलावा, 'UITableViewController' में कुछ कार्यक्षमता है (उदाहरण के लिए, नेविगेशन पॉप पर डी-हाइलाइट करें) और सेटअप आपके लिए पहले से ही किया गया है, इसलिए आपको व्हील/ट्विक को किसी भी लेआउट से संबंधित (विशेष रूप से पोस्ट-आईओएस 7) को फिर से शुरू करने की आवश्यकता नहीं है, और यह शुरुआत से अपेक्षित काम करता है। यदि मैं तालिका से अन्य सबव्यूज़ के साथ स्क्रीन साझा करने की आवश्यकता है तो मैं केवल आपकी विधि की अनुशंसा करता हूं। –

1

यह एक बात है जो मुझे कोको के बारे में बहुत भ्रमित लगता है: एमवीसी के एप्पल के कार्यान्वयन (या कम से कम शब्दावली का उपयोग) संदिग्ध है। कोको में, ज्यादातर विचार स्वयं वास्तव में कुछ क्षमता में काम कर रहे हैं क्योंकि नियंत्रक इनके रूप में परिभाषित होते हैं क्योंकि एमवीसी पैटर्न उन्हें परिभाषित करता है (केवल UITableView देखें - इसकी अधिकांश विधियां वास्तव में नियंत्रक विधियां हैं)। इसलिए आपके पास एक नियंत्रक की कुछ हद तक पहले से मौजूद है जो शीर्ष पर एक दृश्य नियंत्रक की ऐप्पल की अतिरिक्त अवधारणा है। तथ्य यह है कि आपको UITableViewController का उपयोग करने की भी आवश्यकता नहीं है (यहां तक ​​कि डेटा बाध्यकारी के साथ) मूल रूप से साबित करता है कि दृश्य अपने स्वयं के नियंत्रक के रूप में कार्य कर रहा है। एमवीसी में, आपके पास नियंत्रक के बिना मॉडल के लिए एक दृश्य नहीं हो सकता है (यह एमवीसी में नियंत्रक के पूरे बिंदु है)।

यह एप्पल के डेवलपर्स के लिए प्रकट होता है, कि एक "दृश्य नियंत्रक" (जैसे UITableViewController) एक से थोड़ा अधिक स्तर के सहायक/प्रबंधक वर्ग है कि अधिक निम्न स्तर UITableView वर्ग का प्रबंधन वास्तव में अधिक है और एक कुछ कुंजी additional capabilities सक्षम बनाता है यह ऐप के सामान्य यूआई के साथ इंटरफेस को कैसे देखता है, इस बारे में अधिक जानकारी देता है।

इसके अतिरिक्त, ऐसा प्रतीत होता है कि ऐप्पल वास्तव में स्क्रीन नियंत्रक के अधिक देखने के लिए एक व्यू कंट्रोलर का इरादा रखता है, प्रति स्क्रीन केवल एक दृश्य नियंत्रक की सिफारिश करता है (संभवतः इसका अर्थ है कि आप घोंसला नियंत्रक नहीं देख सकते हैं)। मैं यह मानता हूं कि इस अवधारणा को एक कंट्रोल कंट्रोलर एक गलत नामक है।

कृपया मुझे इस पर सही करने में संकोच न करें, मैं अभी भी ओबज-सी/कोको के लिए बहुत नया हूं।

0
UITableView is a view and UITableViewController is a controller having UITableView as its root view. 

So by using UITableViewController: 
1. You have one root view that is UITableView itself. So takes less memory than UITableView with UIView as parent view in controller. 
2. Provides you ready to use template, if you needed a controller and UITableView as its main display view. 
3. Static table views are only valid when embedded in UITableViewController instances. 
संबंधित मुद्दे