2011-06-21 10 views
5

मैं अपने OutlineView के किसी अन्य वर्ग में प्रोग्रामेटिक रूप से चयन करना चाहता हूं।NSOutlineView के चयन को प्रोग्रामेटिक रूप से सेट करें (और NSTableView के चयन प्राप्त करें)

मैं NSOutlineView के [[appDelegate outlineViewController] outlineView] के उदाहरण को प्राप्त करने में सक्षम हूं।

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

तो फिर, मैं OutlineView के चयन प्रोग्रामेटिक रूप से कैसे बदल सकता हूं?

यदि प्रश्न अस्पष्ट दिखता है, तो कृपया मुझे बताएं कि इसे और अधिक समझने योग्य बनाने के लिए मैं क्या कर सकता हूं।

उत्तर

7

यदि मैं आपको सही ढंग से समझ रहा हूं, तो मुझे लगता है कि आप NSOutlineView की – selectRowIndexes:byExtendingSelection: विधि की तलाश में हैं। ध्यान दें कि NSOutlineViewNSTableView का उप-वर्ग है।

+0

जब हम NSOutlineView में पेड़ के लिए उपयोग करते हैं तो यह काम नहीं कर रहा है। गहराई के पेड़ के 3-4 स्तर का उपयोग करते समय चयन करने का कोई तरीका? –

2
मेरे मामले के लिए

,
मैं था "आइटम सूची दृश्य" के नीचे से आइटम के साथ एक NSTableView,
और इस के लिए एक OutlineView समान:

  1. जनक एक
    • ख़ाली
    • smth
    • smth
    • । । ।
  2. जनक बी
    • ख़ाली
    • ख़ाली
    • । । ।
  3. गई वस्तुओं की सूची को देखने
    • ITEM1
    • ITEM2
    • ITEM3

जनक ए और बी महत्वपूर्ण नहीं हैं, लेकिन वे यहाँ कर रहे हैं, दर्शाते हैं कि करने के लिए वहाँ "आइटम सूची दृश्य" से पहले लाइनों की एक निश्चित संख्या नहीं है।

तो, मैं क्या किया था, मैं अपने NSTableView के प्रतिनिधि में और विधि उपयोग
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];
में
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
विधि का इस्तेमाल किया है कि मेरे tableView में नए चयनित पंक्ति पाने के लिए।

उसके बाद मुझे "आइटम सूची दृश्य" की पंक्ति संख्या मिली (यह गतिशील रूप से इसे प्राप्त करता है, भले ही "माता-पिता" का विस्तार किया गया हो या नहीं, और उनके कितने बच्चे हैं), और "आइटम सूची दृश्य" ", अगर यह पहले से ही विस्तारित नहीं किया गया था।

अगला, मैंने सभी नंबरों को एक साथ जोड़ा: clickedRowInTableView + rowNrOfItemsListView + 1, "आइटम सूची दृश्य" पंक्ति के लिए 1।

फिर मैंने NSOutlineView का – selectRowIndexes:byExtendingSelection: (में चयनित पंक्ति सेट करने के लिए, इसे इंगित करने के लिए नाट धन्यवाद) का उपयोग किया।

मुझे उम्मीद है कि यह वही स्थिति में उन लोगों के लिए कुछ मदद की जा सकती है जैसा मैं था।

+0

मुझे खुशी है कि आपको एक समाधान मिला! अगर आपको लगता है कि आपकी समस्या पूरी तरह हल हो गई है, तो आपको या तो अपना उत्तर या मेरा स्वीकार्य उत्तर के रूप में चिह्नित करना चाहिए ताकि भविष्य के दर्शक जान सकें कि यह प्रश्न हल हो गया है। :) –

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