2010-03-02 16 views
9

मैं एक अनुभाग शीर्ष लेख के लिए शीर्षक वापस जाने के लिए कुछ बहुत ही सरल कोड है बस पहला अक्षर और फिर अंडाकार। ऊपर और नीचे स्क्रॉल करना (हेडर व्यू को सबसे अधिक रीफ्रेश करने के लिए) परिणामस्वरूप शीर्षक लगभग आधा समय दिखाएगा और उस समय के दूसरे आधा गलत तरीके से दिखाएगा।UITableView titleForHeaderInSection ठीक से प्रदर्शित नहीं

क्या किसी को यह पता है कि इसका कारण क्या हो सकता है? मुझे लगता है कि यह हालिया विकास का अधिक है, लेकिन ऐसा लगता है कि मेरे आवेदन में लगभग UITableView एस है। मैं यह नहीं कहना चाहता कि यह एक 3.2 मुद्दा है, लेकिन हो सकता है कि यह तब हो रहा हो, लेकिन किसी भी तरह से इसे किसी भी तरह से कोड से संबंधित होना चाहिए। धन्यवाद।

उत्तर

5

मैं इसे आंकड़ा बाहर कर दिया है: कोड @"" लौट रहा था के साथ वास्तविक समस्या। यदि आप शून्य की जगह केवल एक खाली स्ट्रिंग लौटते हैं, तो यह हेडर और पाद लेखों के प्रदर्शन में समस्या का कारण बन जाएगा।

सभी शीर्षकों और पाद लेखों को सही तरीके से प्रदर्शित करने के लिए आपको एक नील स्ट्रिंग वापस करने की आवश्यकता है। एक स्थान लौटने पर @" " अभी भी शीर्षलेख के लिए लंबवत स्थान छोड़ देगा ताकि यह व्यवहार्य विकल्प न हो। मैंने return @""; के सभी उदाहरणों को return nil;

में बदल दिया है
1

मैं प्रतिलिपि & ने अपनी परियोजनाओं में से एक को अपना कोड पेज़ किया और यह दोषपूर्ण काम करता है। (एसडीके 3.2.1)

शायद त्रुटि किसी अन्य हिस्से में है? अपनी खुद की tablecells बना रहे हैं? यदि हां, तो क्या आप "tableView: heightForRowAtIndexPath:" से apropiate ऊंचाई लौट रहे हैं? (उस समस्या ने मुझे एक बार मारा)

1

अनुभाग शीर्षलेख टाइटल सेट करते समय, मुझे एक खाली एनएसएसटींग का उपयोग करने में बेहतर सफलता मिलती है जो संबंधित खंड पर सेट हो जाती है, और उसके बाद पूरा होने पर उस स्ट्रिंग को रिलीज़ करती है; साथ ही मेरे उपयोग को सीमित करने के लिए नेस्टेड अगर() अन्य() statments।

मैं इसे सरल और साफ रखने की कोशिश करता हूं। बेशक उन टेबलों के लिए जहां मेरे पास 3 से अधिक अनुभाग हैं, मैं if() कथन के स्थान पर "स्विच" कथन का उपयोग करता हूं।

इस फ़ंक्शन के बारे में बड़ी बात यह है कि इसे आपके पास कई बार (अनुभागों की संख्या) कहा जाता है और प्रत्येक बार कोड के माध्यम से चलाया जाएगा। NSString *sectionHeader=nil; कंपाइलर को आपके मान() कथनों में एम्बेड किए गए किसी भी चीज़ के बावजूद वापस करने का मूल्य देता है। अन्यथा, आपको चेतावनियां मिलती हैं क्योंकि संकलक आपके वापसी मूल्य के लिए if() कथन में नहीं खोजता है।

आप स्ट्रिंग को "डिफ़ॉल्ट" मान में भी प्रारंभ कर सकते हैं, उदा। NSString *sectionHeader = @"Default Header Title";। यदि if() कथनों में से कोई भी संतुष्ट नहीं है, तो आवंटित डिफ़ॉल्ट शीर्षलेख मान पूरे कार्य में समान रहेगा और इस प्रकार शीर्षक के लिए अनुभाग हैडर के रूप में वापस आ जाएगा।

बेसिक नीचे संरचना:

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

//TEMP SECTION STRING HOLDER: 
NSString *sectionHeader = nil; 


//SET TITLE FOR EACH SECTION: 
if(section == 0) { 
    sectionHeader = @"Section Header No. 1"; 
} 

if(section == 1) { 
    sectionHeader = @"Section Header No. 2"; 
} 

if(section == 2) { 
    sectionHeader = @"Section Header No. 3"; 
} 


//RETURN THE SECTION HEADER FOR EACH SECTION: 
return sectionHeader; 

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