2013-02-10 23 views
11

की ऊंचाई को नहीं बदला जा सकता है Apple iPhone घड़ी ऐप में, जब कोई उपयोगकर्ता एक नया अलार्म जोड़ता है तो एक मोडल व्यू पॉप अप हो जाता है। मैं इसके समान यूआई बनाने की कोशिश कर रहा हूं।UITableView

वर्तमान में मेरे पास UINavigationController के रूट व्यू कंट्रोलर के रूप में UITableViewController है।

मैं भी एक UIDatePicker UINavigationController करने के लिए एक subview के रूप में जोड़ लिया है:

[self.navigationController.view addSubview:mydatePicker]; 

हालांकि, मैं अपने UITableView (UITableViewController के उस) में 10+ बारे में पंक्तियों और जैसे ही मैंने UIDatePicker मैं जोड़ा सभी कोशिकाओं को देखने के लिए स्क्रॉल नहीं कर सकते हैं।

मुझे एहसास हुआ कि UITableView आकार एक ही आकार है जैसा कि मैंने UIDatePicker जोड़ा था, और इसलिए मुझे सभी तालिका कक्षों को देखने के लिए स्क्रॉल करने में सक्षम होने के लिए अपना आकार बदलना होगा।

मैंने अपने आकार को बदलने के लिए कई चीजों की कोशिश की है, सभी को कोई फायदा नहीं हुआ। नीचे दिए गए कोड में मैंने मनमाने ढंग से नई ऊंचाई के लिए 50 चुना।

पहले, सीमा ऊंचाई को बदलने की कोशिश की:

CGRect bounds = [self.tableView bounds]; 
[self.tableView setBounds:CGRectMake(bounds.origin.x, 
            bounds.origin.y, 
            bounds.size.width, 
            50)]; 

फिर फ्रेम ऊंचाई बदलने की कोशिश की: googling के बाद

CGRect tvframe = [self.tableView frame]; 
[self.tableView setFrame:CGRectMake(tvframe.origin.x, 
            tvframe.origin.y, 
            tvframe.size.width, 
            50)]; 

फिर कुछ और मैं contentSize ऊंचाई को बदलने की कोशिश की:

CGSize thesize = self.tableView.contentSize; 
thesize.height = 50; 
self.tableView.contentSize = thesize; 

इनमें से कोई भी UITableView के आकार पर कोई प्रभाव नहीं दिखता है। मैं अभी भी सभी कोशिकाओं को देखने के लिए स्क्रॉल नहीं कर सका।

बाद में मैंने उपर्युक्त तरीकों में से कुछ कोशिश की लेकिन UITavigationCiewroller पर UITableView के बजाय। मुझे इसके साथ बहुत भाग्य नहीं मिला।

अंतिम उपाय के रूप में, मैंने स्टोरीबोर्ड संपादक में UITableView के आकार को बदलने की कोशिश की। मैं इसे या तो समझ नहीं पाया।

आपकी सहायता के लिए धन्यवाद।

+1

क्या आप UITableViewController का उपयोग कर रहे हैं? एक कस्टम UIViewController के भीतर एक सादे UITableView का उपयोग करना सामान्य रूप से काम करने के लिए कम quirks है। – Kekoa

+0

हां, मैं एक UITableViewController का उपयोग कर रहा हूं (मेरे पास वास्तव में एक कस्टम क्लास है जो UITableViewController को विरासत/लागू करता है)। मैं इसे प्रतिबिंबित करने के लिए पोस्ट अपडेट करूंगा। – dtmland

उत्तर

18
UITableViewController class reference से

, यह:

सही आयाम के साथ एक बिना कॉन्फ़गर UITableView वस्तु बनाता है और autoresize मुखौटा

और जो विशेष रूप से इस व्यवहार के पते Table View Programming Guide for iOS से एक उद्धरण:

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

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

+8

ऐप्पल मैं कभी-कभी ऐसी गड़बड़ी करने के लिए आपको नफरत करता हूं ...! – NightFury

0

आपको अपने आकार को विश्वसनीय रूप से बदलने के लिए UITableView को अपने मुख्य दृश्य का एक सबव्यूव बनाने की आवश्यकता है।

फ्रेम बदलने के बाद फ्रेम बदलने के लिए सही मूल्य है।

+0

मेरे पास वर्तमान में UITableViewController के भीतर UITableview है, क्या यह पर्याप्त नहीं है? "मुख्य दृश्य" से आपका मतलब UINavigationController है? – dtmland

+0

या शायद आप का मतलब UINavigationController के रूट व्यू कंट्रोलर के रूप में एक नया UIViewController बनाना है, और इस पर UITableView जोड़ें? UITableViewController के भीतर UITableview के साथ काम करने से यह अलग कैसे होगा? – dtmland

+0

मेरा मतलब है कि आपके ViewController के दृश्य के रूप में UITableView जोड़ें .view। मुझे याद आया कि आप UITableViewController का उपयोग कर रहे थे, Inafziger सही है। – Brane

0

मुझे नहीं पता कि आपकी असली समस्या क्या है। लेकिन आपके UITableView के परिवर्तन की दृष्टि के लिए और UITableView में सभी पंक्तियों को प्रदर्शित करने के लिए निम्नलिखित कोड लिखें।

self.tblView.frame = CGRectMake(0, 0, 320, 50); 

कृपया इसे आज़माएं।

+0

जैसा कि मैंने पोस्ट में उल्लेख किया है, मैंने पहले ही यह कोशिश की है। यह काम नहीं करता। मेरी समस्या lnafziger द्वारा दिए गए उत्तर में निहित है। – dtmland

0

आपका है कि में, UITableView नियंत्रक ले जा रहे हैं कि उपयोग UIViewController के स्थान पर uitabelview जोड़ें। अब आप uitableview का आकार कर सकते हैं।

3

जैसा आपने उल्लेख किया था, वही समस्या थी। मैं UITableViewController के तालिका दृश्य की ऊंचाई को बदलने में असमर्थ था। मैंने self.view और self.tableview के फ्रेम और केंद्रों को बदलने की कोशिश की। परंतु विफल हो गया। फिर मैंने इसे एक चाल से हल किया, टेबलव्यू की सामग्री को बदलना।

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 44.0f, 0); // here you can replace 44.0f with your height