2012-12-14 47 views
5

से/संक्षिप्त एनीमेशन मैं सोच रहा हूँ कैसे करता है एक चेतन विस्तार/कोड से एक NSOutlineView के पेड़ नोड के पतन?NSOutlineView विस्तार कोड

// this works ok but doesn't animate 

NSTreeNode *node = [self.outlineView itemAtRow:self.outlineView.clickedRow]; 

if([self.outlineView isItemExpanded:node]) 
{ 
    [self.outlineView.animator collapseItem:node]; 
}else{ 
    [self.outlineView.animator expandItem:node]; 
} 

एक रूपरेखा दृश्य स्वाभाविक रूप से एनिमेट यदि आप डिफ़ॉल्ट तैयार तीर के माध्यम से एक नोड
तो वहाँ एक रास्ता है ...

उत्तर

11

मेरे मूल कोड ठीक था, यह सिर्फ Application Kit Release Notes for OS X v10.8 से 10.7

मूल पाठ के तहत उपलब्ध नहीं था:

NSOutlineView

निम्न विधियों में अब -animator प्रॉक्सी के माध्यम से एनिमेटेड किया जा रहा समर्थन करते हैं: - विस्तार Item :, -expandItem: expandChildren :, -collapseItem :, और -collapseItem: पतन बच्चे:। एक उदाहरण के रूप में, किसी विशेष आइटम के विस्तार को एनिमेट करने के लिए: [[outlineView animator] expandItem: item];

+0

क्या आप रिलीज नोट्स से लिंक कर सकते हैं जहां यह कहता है? – zakdances

+0

हो गया। कहा गया है कि एनएसओटलाइन व्यू सेक्शन – Nightbirdsevolve

+1

में है यदि आप स्विफ्ट का उपयोग कर रहे हैं, तो आप एक्सकोड में स्वतः पूर्ण नहीं होंगे जब आप 'outlineView.animator()। Ex' टाइप करने का प्रयास कर रहे हैं। शायद यह एक बग है। लेकिन अगर आप इसे मैन्युअल रूप से टाइप करते हैं तो यह वास्तव में काम करता है 'outlineView.animator()। ExpandItem (item) '। –

0

समस्या होने की संभावना है node आप collapseItem: करने से गुजर रहे हैं विस्तार। आपको अपने डेटा मॉडल से वास्तविक नोड की बजाय नोड का प्रतिनिधित्व करने के लिए अपने पेड़ नियंत्रक का उपयोग करने वाली ऑब्जेक्ट को पास करने की आवश्यकता है। यदि आप NSTreeController का उपयोग कर रहे हैं, तो आपको अपने डेटा मॉडल ऑब्जेक्ट का प्रतिनिधित्व करने वाले नोड का पता लगाने के लिए -[NSTreeController arrangedObjects] से लौटाई गई संरचना को पार करने की आवश्यकता है।

+0

हाय वहाँ, मैं कोड के माध्यम से खोलने/ढहने में सफल रहा था, मुझे यह समस्या है – Nightbirdsevolve

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

  • कोई संबंधित समस्या नहीं^_^