2011-05-24 6 views
9

मैं एक प्रश्नोत्तरी ऐप में कुछ जानकारी प्रदर्शित करने के लिए एक टेबलव्यू का उपयोग कर रहा हूं जिस पर मैं काम कर रहा हूं। मेरा सवाल यह है कि मैं टेबलव्यू को केवल उन कोशिकाओं की संख्या कैसे दिखा सकता हूं जिन्हें मुझे चाहिए। Ive इस तरह पंक्तियों प्रतिनिधि विधि की संख्या निर्धारित:UITableview प्रदर्शित करने वाले कक्षों की संख्या को सीमित कैसे करें?

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 5; 
} 

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

किसी भी विचार या मदद की सराहना की।

+0

यह स्पष्ट नहीं है कि आप समूहबद्ध शैली का उपयोग करने से बचाना चाहते हैं या इसका उपयोग करने में समस्याएं हैं? –

+0

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

उत्तर

1

आप heightForRowAtIndexPath: लागू कर सकते हैं और स्क्रीन पर 5 कोशिकाओं को दिखाने के लिए सही ऊंचाई की गणना कर सकते हैं।

0

आसान तरीका तालिका दृश्य आकार को कम करना होगा। अर्थात। 5 कोशिकाएं 20 अंक प्रत्येक 100.0f देता है, ऊंचाई को 100.0f तक सेट करने से केवल 5 पंक्तियां दिखाई देगी। एक और तरीका अधिक पंक्तियों को वापस करना होगा, लेकिन 6,7 पंक्तियां और अल्फा 0 के साथ कुछ विचार होंगे, लेकिन यह बोझिल लगता है। क्या आपने कुछ क्लियर रंग दृश्य को footerView के रूप में वापस करने का प्रयास किया है?

0

मुझे लगता है कि यदि आप कक्षों की संख्या के साथ समायोजित करना चाहते हैं, तो आप तालिका दृश्य के फ्रेम को बदलने का प्रयास कर सकते हैं। इस तरह

0

कोशिश कुछ:

[table setFrame:CGRectMake(x, y, width, height*[list count])];

ऊंचाई सेल की ऊंचाई को संदर्भित करता है

2

एक बहुत अच्छे विधि है जो सेल का आकार बदलने की आवश्यकता नहीं है डिफ़ॉल्ट विभाजक बंद करने के लिए (सेट किया गया है किसी के लिए शैली) और फिर सेल में एक विभाजक लाइन है।

+0

तो इसमें आईबी में एक कस्टम सेल बनाना शामिल होगा या क्या मुझे प्रोग्राम में सेल में एक सेपरेटर जोड़ना होगा? –

+0

आप या तो कर सकते हैं। मैं आमतौर पर UITableViewCell subclass लेकिन आप एक सामान्य UITableViewCell की सामग्रीदृश्य में एक सबव्यू जोड़ सकते हैं। आईबी या कोड पूरी तरह से नीचे काम करता है कि आप कैसे काम करना पसंद करते हैं ... –

0

जैसा कि Nyx0uf ने कहा, सेल के आकार को सीमित करने से यह पूरा हो सकता है। उदाहरण के लिए:

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGFloat result; 

    result = 100; 

    return result; 
} 
2

मुझे एक ही समस्या हो रही थी, डेटा वाले कक्षों के लिए केवल विभाजक कैसे दिखाना था।

  1. पूरे tableView के लिए अक्षम विभाजक:

    मैं क्या निम्नलिखित था। आप इंटरफेस बिल्डर में टेबलव्यू के लिए इंस्पेक्टर में या [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; पर कॉल करके ऐसा कर सकते हैं।

  2. अपने cellForRowAtIndexPath के अंदर जहां आप कोशिकाओं के साथ अपने टेबलव्यू को पॉप्युलेट करते हैं, तो एक नया UIView बनाएं और इसे सेल के सबव्यू के रूप में सेट करें। इस दृश्य की पृष्ठभूमि प्रकाश और थोड़ा पारदर्शी है। आप निम्न के साथ ऐसा कर सकते हैं:

    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake: 
                 (0, cell.frame.size.height-1, 
                  cell.frame.size.width, 1)]; 
    [separatorView setBackgroundColor:[UIColor lightGrayColor]]; 
    [separatorView setAlpha:0.8f]; 
    [cell addSubView:separatorView]; 
    

    इस दृश्य की चौड़ाई 1 पिक्सेल जो डिफ़ॉल्ट विभाजक के रूप में एक ही है, यह सेल की लंबाई, तल पर चलाता है।

cellForRowAtIndexPath के बाद से ही जितनी बार आपके द्वारा निर्दिष्ट numberOfRowsInSection में इन subviews केवल कोशिकाओं है कि डेटा के अधिकारी और एक विभाजक होना चाहिए के लिए बनाया जाएगा कहा जाता है।

उम्मीद है कि इससे मदद मिलती है।

+0

भयानक विचार ... – stackOverFlew

1

क्या आपके पास हमेशा 5 पंक्तियां हैं? यदि यह गतिशील स्थिति है तो आपको तालिकादृश्य के डेटासोर्स के अनुसार पंक्तियों की संख्या निर्धारित करनी चाहिए। उदाहरण के लिए:

return [postListData count]; 

यह सामग्री धारण करने वाले सरणी में रिकॉर्ड्स की गणना देता है।

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

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 2; 
} 

इसके बिना तालिकादृश्य में केवल 1 अनुभाग होगा। इसके साथ, जैसा कि आप कल्पना करेंगे, आप अनुभागों की संख्या निर्दिष्ट कर सकते हैं।

1

यह मेरे लिए काम किया - मैं एक iphone 5 पर स्क्रीन के नीचे स्थित अतिरिक्त खाली पंक्तियों था -

मेरे मामले मैं 9 पंक्तियों

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{   
    return self.tableView.frame.size.height/9; 
} 
0

अपने UITableViewController में इन दोनों तरीकों को लागू करने की जरूरत में :

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; 
    } 
    return nil; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return 1; 
    } 
    return 0; 
} 

वास्तव में, इन कोड, tableview है कि आप अब और मेरे लिए विभाजक रेखा प्रस्तुत करना की जरूरत नहीं है कह रहे हैं तो यह लग रहा है कि रिक्त कक्षों जिले नहीं होगा खेला (वास्तव में, खाली सेल भी नहीं चुना जा सकता है)

14

यदि आप विभाजक रखना चाहते हैं, तो आप एक डमी पाद लेख दृश्य डाल सकते हैं। यह tableview की सीमा केवल कोशिकाओं की मात्रा आप tableView में लौटे दिखाने के लिए होगा: numberOfRowsInSection:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 

तेज में:

self.tableView.tableFooterView = UIView(frame: CGRectZero) 
+0

अच्छा है।बस सुनिश्चित करें कि उस तालिका दृश्य के लिए निश्चित ऊंचाई सेट न हो या अतिरिक्त पाद लेख दृश्य तालिका दृश्य के नीचे चीजों को आगे बढ़ाए (भले ही यह केवल एक डमी हो)। – marco

+2

स्विफ्ट 3: self.tableView.tableFooterView = UIView (फ्रेम: CGRect.zero) – KZD76

1

यह काफी सरल है। बस इस तरह के पॉपओवर का आकार सेट करें: self.optionPickerPopOver.popoverContentSize = CGSizeMake (200, 200); निश्चित रूप से आप सामग्री के आकार और पंक्तियों के आधार पर आकार (200,200) समायोजित कर सकते हैं।

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