2009-10-23 10 views
7

में सभी उपलब्ध स्थान का उपयोग करता है मुझे एक UIView (इंटरफ़ेस बिल्डर में) बनाने में समस्या हो रही है जिसमें यूआईटीबल व्यू कुछ अन्य ऑब्जेक्ट्स जैसे UIButton या UILabel के साथ है। UITableView हमेशा UITiew में अधिकतम स्थान लेता है, भले ही UITableView ऑब्जेक्ट के आकार के बावजूद। फ़ाइल स्वामी एक मानक UITableViewController है।UITableView इंटरफ़ेस बिल्डर

+1

क्या आप इसे इस तरह नाम दे सकते हैं: "UITableView इंटरफ़ेस बिल्डर में सभी उपलब्ध स्थान का उपयोग करता है"? वर्तमान शीर्षक बहुत वर्णनात्मक नहीं है – Casebash

उत्तर

12

यहां आसानी से यह कैसे करें:

1) xib के साथ एक तालिका दृश्य नियंत्रक बनाएं।

2) विरासत प्रकार को UITableViewController से .h फ़ाइल में UIViewController में बदलें।

3) प्रोटोकॉल जोड़ें UITableViewDataSource, UITableViewDelegate .h फ़ाइल में जोड़ें।

4) xib खोलें, एक दृश्य में जोड़ें।

5) तालिका दृश्य को दृश्य के नीचे xib में खींचें, वांछित के रूप में आकार बदलें।

6) फ़ाइल के मालिक की "दृश्य" संपत्ति को UITableView के बजाय दृश्य में वायर करें। तालिका दृश्य के डेटासोर्स और प्रतिनिधि गुणों को अभी भी फ़ाइल के मालिक को वायर्ड किया जाना चाहिए।

7) (वैकल्पिक) यदि आप तालिका दृश्य में पास होने वाले तालिका दृश्य नियंत्रक प्रतिनिधि विधियों के बाहर तालिका को फिर से लोड या अन्यथा एक्सेस करने में सक्षम होना चाहते हैं, तो UITableView * IBOutlet नाम "myTable" या जैसा, और आईबी में उस तालिका को तार दें।


एक वैकल्पिक दृष्टिकोण, xib के साथ एक नया UIViewController बनाने xib, तार डेटा स्रोत/फ़ाइल के मालिक के लिए प्रतिनिधि के लिए एक मेज जोड़ने के लिए, और एक नया UITableViewController वर्ग है जो आप में से तरीकों की नकल करने के लिए उपयोग करने के लिए है आपका व्यू कंट्रोलर, फिर हटाएं।

+1

यह करने का यह सही तरीका है।ऐप्पल के दस्तावेज़ों से: "यदि दृश्य को प्रबंधित करने के लिए एक समग्र दृश्य है जिसमें एक तालिका दृश्य एकाधिक सबव्यूज़ में से एक है, तो आपको तालिका दृश्य (और अन्य विचारों) को प्रबंधित करने के लिए UIViewController के कस्टम उप-वर्ग का उपयोग करना होगा। UITableViewController का उपयोग न करें ऑब्जेक्ट क्योंकि यह नियंत्रक वर्ग नेविगेशन बार और टैब बार (यदि कोई मौजूद है) के बीच स्क्रीन भरने के लिए तालिका दृश्य को आकार देता है। " – bpapa

+0

यह भी एक कदम है कि मुझे लगता है कि आपको केंडल जोड़ने की ज़रूरत है - उसे तालिका दृश्य को अपनी UIViewController क्लास की संपत्ति के रूप में स्पष्ट रूप से जोड़ना होगा और इसे एक आईबीओलेट बनाना होगा। – bpapa

+0

केंडल/बीपीपीए - आपकी मदद के लिए धन्यवाद। अपने संयुक्त उत्तरों का उपयोग करके, मैं अपनी समस्या का समाधान करने में सक्षम था। बीपीएपी की आखिरी टिप्पणी के बारे में एक बात - मुझे अपने UIViewController क्लास में "tableView" नामक एक संपत्ति बनाना पड़ा; हालांकि, यह काम करना प्रतीत होता है भले ही मैंने इसे आईबीओलेट के रूप में घोषित न किया हो या आईबीओलेट को वास्तविक तालिका में कनेक्ट न किया हो। मुझे पता नहीं चला कि यह क्यों काम करता है ... :-) –

0

दुर्भाग्य से, इंटरफ़ेस बिल्डर (आईबी) में एक UITableView बनाना मेरे लिए बहुत ही समस्याग्रस्त था। मैं एक ही समस्या में भाग गया क्योंकि आप एक शुरुआत डेवलपर के रूप में और बहुत निराशा के बाद, यूआईटीबल व्यू के लिए आईबी छोड़ने के लिए समाप्त हो गया।

मेरे लिए सबसे अच्छा समाधान केवल UITableViewController (और UINavigationController जिसे आप शीर्षलेख के रूप में उपयोग करते हैं) को प्रोग्रामेटिक रूप से कार्यान्वित करना था। एक बार जब आप पूरे मॉडल-व्यू-कंट्रोलर प्रतिमान को समझ लेंगे, तो यह वास्तव में काफी सरल है।

उन लोगों के साथ निपटने के लिए कुछ अच्छे संसाधन प्रोग्राम के रूप में इन नामों के साथ एप्पल के दस्तावेज में पाया जा सकता है

:

"iPhone OS के लिए तालिका देखें प्रोग्रामिंग गाइड"
"iPhone ओएस के लिए देखें नियंत्रक प्रोग्रामिंग गाइड"

+1

केंडल के उत्तर और मेरी टिप्पणी को देखें। 3.0 के बाद से, ऐप्पल ने बेहतर व्याख्या करने के लिए डॉक्स को साफ़ कर दिया। इस दृष्टिकोण का उपयोग करके आप अभी भी इंटरफ़ेस बिल्डर में तालिका दृश्य कर सकते हैं। – bpapa

+0

जानना अच्छा है, धन्यवाद। –

0

प्यार के साथ कोको में Recreating UITableViewController to increase code reuse का आलेख है। यह उपयोगी है अगर आप UITableViewController का उपयोग नहीं कर सकते हैं, लेकिन यह सुनिश्चित करना चाहते हैं कि आपका UIViewController वही व्यवहार करेगा।

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