2013-03-19 6 views
6

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

मैंने वापसी मूल्यों से 2 घटाए जाने के लिए -levelForRow: और -levelForItem: ओवरराइड करने का प्रयास किया है, लेकिन इससे मदद नहीं मिली। मैंने फ्रेम की चौड़ाई से 2 * इंडेंटेशन पेरेलवेल को घटाने के लिए -frameOfOutlineCellAtRow: को ओवरराइड करने का भी प्रयास किया, लेकिन इससे कोई मदद नहीं मिली, संभवतः क्योंकि मैं प्रकटीकरण त्रिकोण नहीं दिखा रहा हूं। इस मुद्दे को कैसे हल किया जा सकता है इसके बारे में कोई विचार?

रूपरेखा दृश्य NSTreeController से जुड़ा हुआ है, जो अंतर्निहित डेटा संरचना को फ़्लैट करना मुश्किल बनाता है, लेकिन मेरे पास एक रूपरेखा दृश्य प्रतिनिधि सेट अप है।

+0

क्या आप मुझे एक स्क्रीन शॉट या स्केच दिखा सकते हैं जो आप चाहते हैं। वैसे भी मेरा जवाब और स्क्रीन शॉट जांचें, और अगर आप यही चाहते हैं तो टिप्पणी करें? –

उत्तर

7

समाधान frameOfCellAtColumn:row: का उपयोग करना है जो NSTableView विधि है।

- (NSRect)frameOfCellAtColumn:(NSInteger)column row:(NSInteger)row; 
{ 
    NSRect frame = [super frameOfCellAtColumn:column row:row]; 

    if (column == (NSInteger)[self.tableColumns indexOfObjectIdenticalTo:self.outlineTableColumn]) { 
     if (this-item-or-row-matches-your-conditions) { 
      frame.origin.x -= self.indentationPerLevel; 
      frame.size.width += self.indentationPerLevel; 
     } 
    } 

    return frame; 
} 

यह विधि सेल-आधारित और दृश्य-आधारित तालिका दृश्यों और रूपरेखा दृश्यों दोनों में लेआउट को नियंत्रित करती है।

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