2009-02-06 23 views
22

मुझे NSTreeController (यदि इससे कोई फर्क पड़ता है) तक बाध्य हो गया है, और मैं अपने -awakeFromNib() में प्रत्येक नोड का विस्तार करना चाहता हूं।NSOutlineView - सभी नोड्स को स्वत: विस्तारित करें

मैं भी एक ही समय में पहले नोड के पहले बच्चे को प्रोग्रामिक रूप से चुनना चाहता हूं। इस तरह की चीजें टेबल दृश्यों के साथ सरल होती हैं, लेकिन रूपरेखा मेरे साथ सहयोग नहीं कर रही हैं।

धन्यवाद,

रिच

उत्तर

54

मैं अपने -awakeFromNib में प्रत्येक नोड का विस्तार करना चाहते हैं()।

मैक ओएस एक्स 10.5, [outlineView expandItem:nil expandChildren:YES] के रूप में।

मैक ओएस एक्स के पिछले संस्करणों में, आपको पंक्तियों की संख्या से 0 से [outlineView itemAtRow:row] का उपयोग करके प्रत्येक पंक्ति के लिए आइटम प्राप्त करना होगा, और उन वस्तुओं को सरणी में संग्रहीत करना होगा, फिर सरणी को फिर से भरें और प्रत्येक को पास करें आइटम expandItem:expandChildren: विधि पर। (आप दो लूपों को मिश्रण नहीं कर सकते हैं क्योंकि किसी आइटम का विस्तार करना और उसके सभी वंशज इसके बाद के भाई बहनों की पंक्ति अनुक्रमणिका बदल देंगे, इसलिए, आपको पहले सभी शीर्ष-स्तरीय वस्तुओं को एकत्र करना होगा, फिर उनमें से एक बार उन्हें विस्तारित करना होगा।)

मैं प्रोग्रामिंग रूप से एक ही समय में पहले नोड के पहले बच्चे को प्रोग्राम करना चाहूंगा।

तुरंत ऊपर के बाद, यह पंक्ति 1.

एक रूपरेखा दृश्य तालिका दृश्य की तरह है हो जाएगा, तो आप NSTableView के तरीकों में से एक का उपयोग करेंगे: [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO]

+0

बिल्कुल सही है, धन्यवाद। नील काम क्यों गुजरता है? मैंने उस संदेश को केवल हर ऑब्जेक्ट के साथ करने की कोशिश की जिसके बारे में मैं सोच सकता था ... –

+1

NSOutlineView प्रलेखन के रूप में बताता है, यह शून्य को सौंपता है क्योंकि आइटम सभी रूट आइटम्स का विस्तार करने के लिए कहता है। –

+1

यह भी संबंधित है: कोडिंग करते समय बहुत अधिक शराब न पीएं और आउटलेट को NSOutlineView से कनेक्ट करना न भूलें जैसा मैंने आज किया था। ;) –

-2

आप एक डेटास्रोत से लोड कर रहे हैं, तो

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.outlineView expandItem:root expandChildren:YES]; 
}); 
संबंधित मुद्दे