2009-08-25 21 views
5

मैं चीजों के आवेदन में किए गए विशेष आइटमों का वही व्यवहार करना चाहता हूं।एक साइडबार के सबसे निचले भाग में NSOutlineView के अंतिम पेड़ आइटम को कैसे रखें?

Logbook and Trash items are in the most bottom http://tinyurl.com/lhctza

कृपया साइडबार पेड़ में ही कार्यक्षमता को लागू करने के लिए किसी भी तरह की सलाह: मैं कार्यपंजी और ट्रैश साइडबार के निचले हिस्से में आइटम मतलब है।

मुझे लगता है कि विशेष 'स्पेसर' पेड़ आइटम outlineView:heightOfRowByItem: विधि के साथ एक साथ उपयोग किया जाना चाहिए।

हालांकि, मैं नहीं देख सकता कि सभी दृश्यमान वस्तुओं (समूहों के बीच सहित स्थान) की कुल ऊंचाई की गणना कैसे करें।

उत्तर

1

मैंने समूह शैली में प्रत्येक रूट आइटम के लिए 8 पिक्सल ऊंचाई जोड़कर समाधान को हार्डकोड करने का निर्णय लिया है। समर्थन के लिए

- (CGFloat)outlineView:(NSOutlineView *)ov heightOfRowByItem:(id)item; 
{ 
    if (![item isSpacer]) return [ov rowHeight]; 

    static const CGFloat ADDITIONAL_SPACE = 8.0f; 
    NSUInteger numberOfRootGroups = 2; 
    CGFloat heightOfRows = [ov rowHeight] * ([ov rowForItem:item] + 1) 
     + ADDITIONAL_SPACE * numberOfRootGroups; 
    CGFloat heightOfSidebar = [[ov superview] frame].size.height; 
    return MAX(0.0f, heightOfSidebar - heightOfRows); 
} 

सभी को धन्यवाद: तो, कोड इस तरह दिखता है!

3

आप केवल दो रूपरेखा दृश्यों को आज़मा सकते हैं: निश्चित ऊंचाई में से एक, उनके पर्यवेक्षण के निचले भाग में पिन किया गया है, और परिवर्तनीय ऊंचाई के दूसरे, इसके नीचे तुरंत नीचे के ऊपर से नीचे है। निश्चित-ऊंचाई रूपरेखा दृश्य में उन लॉगबुक और ट्रैश आइटम होंगे, और परिवर्तनीय-ऊंचाई रूपरेखा दृश्य में अन्य सभी शामिल होंगे।

मुश्किल हिस्सा स्क्रॉल दृश्य के साथ यह नाटक अच्छा बना देगा, लेकिन मुझे लगता है कि आप इसे कर सकते हैं। मुझे कल्पना है कि आप उन्हें पूरी तरह से बदलने योग्य एनएसवी व्यू में डाल देंगे और स्क्रॉल व्यू के दस्तावेज़ दृश्य को बनाएंगे।

+0

+1। मैंने अन्य सूचियों को देखा है (जैसे अकाउंटपेन में लॉग इन विकल्प आइटम) इस तरह से दोहराया गया है। – iKenndac

+0

हालांकि, आपको न केवल राज्यों और 2 विचारों को स्क्रॉल करना, बल्कि इंडेंटेशन स्तर, अगले उत्तरदाताओं, कुछ हॉट-कुंजियां आदि का प्रबंधन करना चाहिए। प्रश्न अभी भी खुला है :) – Stream

+0

अगर वे शीर्ष-स्तरीय आइटम हैं तो इंडेंटेशन स्तर नहीं बदला जाना चाहिए। हालांकि, प्रतिक्रियाकर्ता श्रृंखला के बारे में अच्छा बिंदु। –