2010-04-10 13 views
12

में रिक्त UITableViewCells दिखाएं मैं एक UITableView को अनुकूलित करने की कोशिश कर रहा हूं। अब तक, यह अच्छा लग रहा है।कस्टम UITableView

alt text http://img193.imageshack.us/img193/2450/picture1zh.png

डिफ़ॉल्ट tableview शैली का उपयोग करते हुए मैं दोहरा रिक्त पंक्तियों दृश्य में भरने की प्राप्त कर सकते हैं: लेकिन जब मैं एक कस्टम UITableViewCell उप-वर्ग का उपयोग करें, मैं खाली तालिका सेल कब वहां केवल 3 कोशिकाओं नहीं मिलता (उदाहरण के लिए, मेल एप्लिकेशन में यह है)। मैं एक ही टाइल पृष्ठभूमि के लिए UITableView पर एक पृष्ठभूमि रंग पैटर्न सेट करने की कोशिश की:

UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"score-cell-bg.png"]]; 
moneyTableView.backgroundColor = color; 

... लेकिन टाइल tableview के शीर्ष से पहले थोड़ा शुरू होता है, तो टाइल बंद है एक बार वास्तविक सेल प्रदर्शित किया जाता है:

alt text http://img707.imageshack.us/img707/8445/picture2jyo.png

मैं अपने tableview कैसे अनुकूलित कर सकते हैं, लेकिन अभी भी अगर वहाँ कम पंक्तियों की तुलना में एक पृष्ठ को भरने के रिक्त पंक्तियों रहते हैं?

+1

+1 यह एक अच्छा सवाल है जो अच्छी तरह प्रस्तुत किया गया है। मैं चाहता हूं कि हर कोई, स्वयं शामिल है, एक अच्छा सवाल लिखने के लिए इतना समय लगा। – TechZen

+0

मैं एक ही प्रश्न बनाने की कोशिश कर रहा था और दो अलग-अलग दृष्टिकोण पाए। Google से यहां आने वाले लोगों के संदर्भ के रूप में, [यह अन्य उत्तर] देखें (http://stackoverflow.com/questions/14520185/ios-uitableview-displaying-empty-cells-at-the-end) जो एक कस्टम का उपयोग करता है पाद लेख देखें। –

उत्तर

9

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

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
} 

अगर ऐसा नहीं है, तो आप हमेशा अतिरिक्त कक्षों का चयन नहीं किया जा सकता है जोड़ने की कोशिश कर सकते हैं:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return ([source count] <= 7) ? 7 : [source count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Set all labels to be blank 
    if([source count] <= 7 && indexPath.row > [source count]) { 
     cell.textLabel.text = @""; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } else { 
     cell.textLabel.text = [source objectAtIndex:indexPath.row]; 
     cell.selectionStyle = UITableViewCellSelectionStyleBlue; 
    } 

    return cell; 
} 
+0

"यह सिर्फ उस भ्रम को बनाने के लिए विभाजक शैली है" आप पूरी तरह से सही हैं। तो, मुझे लगता है कि मैं सिर्फ विभाजक को वापस जोड़ने जा रहा हूं और बैकग्राउंड छवि को पृष्ठभूमि छवि में विभाजक * के बजाय दो कॉलम रंग बना रहा हूं ... typeoneerror

+0

अच्छा, यह बहुत अच्छा काम करता है! अभी भी कुछ करने के लिए tweaking। http://img517.imageshack.us/img517/5091/picture3lt.png – typeoneerror

+1

'अगर ([स्रोत गिनती] <= 7 && indexPath.row> [स्रोत गिनती] नहीं होना चाहिए) {'be' if ([स्रोत गिनती ] <= 7 && indexPath.row> ([स्रोत गणना] - 1)) {'जैसा कि सूचकांक पथ 0 से शुरू होता है जबकि गिनती 1 – Alex

0

मेरा मानना ​​है कि शीर्ष पंक्ति के मामूली मिसलिग्न्मेंट लंबवत स्क्रॉल उछाल के कारण होता है टेबलव्यू का। यदि आप इसे बंद करते हैं, तो शीर्ष पंक्ति को ठीक से संरेखित करना चाहिए।

इसके अलावा, आप केवल एक सेल ऊंचाई वापस कर सकते हैं जिसमें टाइल को tableview:cellHeightForRow: में शामिल किया जाएगा। यह डिफ़ॉल्ट कोशिकाओं पर अच्छी तरह से काम करता है।