2012-07-15 12 views
6

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

उत्तर

10

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

+0

धन्यवाद दोस्त ... इसके अतिरिक्त मुझे अनुभाग ऊंचाई जोड़ने की आवश्यकता है .. अन्यथा ठीक काम करता है .. –

+0

"समूहित" UITableView शैली में दिखाए गए अनुभाग शीर्षलेख को छिपाने के लिए, https://stackoverflow.com/questions/ देखें 19056428/कैसे करने वाली छिपाने-पहले खंड हेडर में UITableView-वर्गीकृत किया शैली –

4

इसके चारों ओर एक तरीका यह है कि यदि आप स्क्रॉल व्यू में अंतिम सेल के रूप में पाद लेख को सेट करते हैं (यह किया जा सकता है लेकिन इसे उस सरणी में अंतिम आइटम के रूप में सेट करना है जिसे आपने उपयोग किया है)

5

फुटर्स को छड़ी माना जाता है। यह चाल प्रत्येक खंड में एक अतिरिक्त सेल जोड़ना और वहां पाद लेख प्रस्तुत करना है। अगर आपको और मदद की ज़रूरत है, तो एक टिप्पणी जोड़ें, लेकिन यह बहुत सरल होना चाहिए।

संपादन:

प्रश्न: ठीक है। मैं TableView को पॉप्युलेट करने के लिए कोर डेटा और NSFetchedResultsController का उपयोग कर रहा हूं। क्या यह इसे पूरा करने के लिए और अधिक मुश्किल बना देगा?

ए: बिलकुल नहीं।

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

प्रत्येक अनुभाग में एक अतिरिक्त सेल को जोड़ने के लिए ओवरराइड, और

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

परीक्षण करता है, तो indexPath.row> उस अनुभाग हेतु आपके fetchedResultsController की पंक्तियों से में। यदि सही है, तो अपने सेल में जोड़ें जो पाद लेख की जानकारी दिखाता है।

+0

ठीक है। मैं TableView को पॉप्युलेट करने के लिए कोर डेटा और NSFetchedResultsController का उपयोग कर रहा हूं। क्या यह इसे पूरा करने के लिए और अधिक मुश्किल बना देगा? – mhbdr

+0

बिलकुल नहीं।ओवरराइड - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) अनुभाग प्रत्येक अनुभाग में एक अतिरिक्त सेल जोड़ने के लिए, और - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) इंडेक्सपाथ परीक्षण करें यदि indexPath.row> उस अनुभाग के लिए आपके fetchedresultscontroller पंक्तियों की तुलना में है। यदि सही है, तो अपने सेल में जोड़ें जो पाद लेख की जानकारी दिखाता है। –

0

एक अतिरिक्त सेल जोड़ना, इसे अदृश्य बनाना और आपके दृश्य को प्रस्तुत करना एक पाद लेख जोड़ने का एक सलाह देने योग्य तरीका नहीं है। इसे ठीक से कर बहुत सीधी-सपाट है:

- (UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section { 
    NSString* sectionFooter = [self tableView:tableView titleForFooterInSection:section]; 

    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, yourWidth, yourHeight)]; //create a view- the width should usually be the width of the screen 
    UILabel* label = [[UILabel alloc] initWithFrame:someFrame]; 

    label.backgroundColor = [UIColor blueColor]; 
    label.textColor = [UIColor whiteColor]; 
    label.text = sectionFooter; 

    [view addSubview:label]; 

    return view; 
} 

तुम भी होगा tableView लागू करने के लिए: titleForFooterInSection: आप मैं यहाँ है की तरह पाठ जोड़ना चाहते हैं।

+2

आपका उत्तर एक पाद लेख जोड़ने के लिए काम करता है, लेकिन उस पाद लेख को टेबलव्यू के नीचे चिपकाया जाएगा, ठीक वही जो वह नहीं चाहता था। – rsc

1

मुझे यह भी समस्या हुई जब मुझे पता चला कि मेरा कोड लैंडस्केप मोड के साथ काम नहीं करता है, और केवल पोर्ट्रेट मोड में काम करता है। मेरे पुराने कोड में, जब लैंडस्केप में टेबलव्यू दृश्य दृश्य से कम स्क्रॉल नहीं कर सकता है और स्क्रॉल करते समय शीर्ष पंक्ति पर वापस आ जाता है (मुझे निम्न पंक्तियों को देखने की अनुमति नहीं देता है)। मुझे बस यह बदलना है कि ऊंचाई को सेल की ऊंचाई के रूप में 44 पर सेट किया गया हो। तो मेरा पाद लेख मूल रूप से स्पष्ट रंग वाला एक और सेल है। ध्यान दें कि मेरा ऐप 'ऑटोलाउट'

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    CGRect screenBounds = [UIScreen mainScreen].bounds; 
    CGFloat width = screenBounds.size.width; 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 44)]; 
    view.backgroundColor = [UIColor clearColor]; 

    UILabel *label = [[UILabel alloc] initWithFrame:view.frame]; 
    label.text = @"Your Text"; 
    [view addSubview:label]; 
    return view; 
}