2008-12-09 20 views
5

में चयनित सेल के पथ के साथ अद्यतन एक एनएसपीएथकंट्रोल कैसे रखूं, मुझे एनएसबीआरओसर में वर्तमान में चुने गए पथ के साथ अद्यतन एक एनएसपीएथकंट्रोल रखने की आवश्यकता है, लेकिन मुझे सूचनाएं प्राप्त करने का एक तरीका पता लगाने में परेशानी हो रही है पथ NSBrowser से बदल गया है। ऐसा करने का आदर्श तरीका एनएसब्रोसर में पथ कुंजी पथ का पालन करना होगा, लेकिन यह केवीओ केवल <key> विधियों को सेट कर सकता है जो शून्य संदेश लौटाते हैं और कोई अपडेट नहीं (सेटपाथ एक बूल सफलता मान देता है)।मैं एनएसबीआरओसर

मैं भी selectedCell कुंजी पथ को देख कोशिश की, लेकिन मैं सूचनाएं चयन वहाँ बदल गया है नहीं मिल रहा है।

कुछ अन्य वास्तव में स्पष्ट यह करने के लिए जिस तरह से है कि मैं याद कर रहा हूँ है?

उत्तर

7

Cocoa Dev पर अधिक रोब Keniger के सौजन्य:

आप में/डेवलपर/उदाहरण SimpleBrowser उदाहरण को देखा है? यह जब यह, उपयोगकर्ता द्वारा बदला है मूल रूप से सिर्फ NSBrowser की कार्रवाई की स्थापना करके कैसे वर्तमान चयन पाने के लिए पता चलता है।

वास्तव में जिस तरह से यह करने के लिए है कि। बस एक - (शून्य) ब्रोसर द्वारा कार्यान्वित करें: विधि (इंटरफ़ेस बिल्डर में मैपिंग सहित) जो भी आप उस विधि के अंदर चयन में परिवर्तन करते समय हर बार करना चाहते हैं, उदा।

- (void)browserClicked:(id)browser { 
    self.pathToSelectedCell = [browser path]; // NSPathControl is bound to pathToSelectedCell 
} 
+3

अरे, यह मैं हूं :-) –

0

मैं सिर्फ आईबी में जाँच की, और यह लग रहा है NSBrowser की तरह एक चयन सूचकांक रास्तों बाध्यकारी (NSIndexPath ऑब्जेक्ट की श्रृंखला) है कि आप संभवतः KVO साथ की निगरानी कर सकता है है। यह अजीब बात है लेकिन मुझे दस्तावेज़ों में इसका कोई उल्लेख नहीं दिख रहा है, इसलिए आपको यह देखने के लिए थोड़ा सा शोध करने की आवश्यकता हो सकती है कि क्या ऐसा कुछ है जो आपको करना चाहिए या नहीं करना चाहिए, भले ही ऐसा लगता है। यदि ऐसा होता है, तो आपके केवीओ अवलोकन विधि में आपको ब्राउजर का वर्तमान पथ मिल जाएगा, और इसे एनएसआरएल में परिवर्तित करने के लिए पथ नियंत्रण का उपयोग किया जा सकता है।

यदि यह काम नहीं करता है तो प्रतिनिधि विधियों - (BOOL)browser:(NSBrowser *)sender selectRow:(NSInteger)row inColumn:(NSInteger)column और - (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(NSInteger)column भी हैं।

+0

कि प्रतिनिधि विधि दुर्भाग्य से केवल करने के लिए selectRow जवाब में कहा जाता हो जाता है: inColumn: भेजा जा रहा है ब्राउज़र के लिए। अगर मैं की स्थापना चुनाव सूचकांक पथ के लिए एक बाध्यकारी तो NSBrowser प्रतिनिधि तरीकों अब कहा जाता है करने के लिए लग रहे हैं, यह तो मैं अपने ब्राउज़र की स्थापना नहीं कर सकते। –

0

10,6 के रूप में, एक जो आइटम, चुने गए हैं इस प्रकार है पता कर सकते हैं प्रतिनिधि कॉलबैक का उपयोग करके:

- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column 
{ 
    NSLog(@"New first item of the new selection is at index %@", [proposedSelectionIndexes firstIndex]); 
    // Do something with the selected index or indicies 
    return proposedSelectionIndexes; // Allow the selection to occur by not changing this 
}