2011-11-11 11 views
16

क्या किसी को शेर में पेश किए गए व्यू-आधारित NSOutlineView का उपयोग करके स्रोत सूची को कार्यान्वित करने के तरीके पर एक स्पष्ट, संक्षिप्त उदाहरण या मार्गदर्शिका मिली है? मैंने ऐप्पल के उदाहरण प्रोजेक्ट को देखा है, लेकिन बिना किसी दिशा या स्पष्टीकरण के, मुझे इस बात की अवधारणा को समझना मुश्किल लगता है कि वे कैसे काम करते हैं।कोको बाइंडिंग का उपयोग करके व्यू-आधारित स्रोत सूची (NSOutlineView) को कार्यान्वित करने का उदाहरण?

मुझे पता है कि उत्कृष्ट PXSourceList को फ़ॉलबैक के रूप में कैसे उपयोग करें, लेकिन वास्तव में यदि संभव हो तो दृश्य-आधारित स्रोत सूचियों का उपयोग शुरू करना चाहेंगे।

उत्तर

29

आपने इसे कोको-बाइंडिंग टैग के साथ टैग किया है, इसलिए मुझे लगता है कि आप "बाइंडिंग के साथ" मतलब रखते हैं। मैंने एक त्वरित उदाहरण चाबुक किया। एक्सकोड में एक नए गैर-दस्तावेज़-आधारित कोको एप्लिकेशन टेम्पलेट से शुरू करें। जो कुछ भी आपको पसंद है उसे बुलाओ। सबसे पहले मैंने कुछ नकली डेटा को बांधने के लिए कुछ कोड जोड़ा।

#import <Cocoa/Cocoa.h> 

@interface SOAppDelegate : NSObject <NSApplicationDelegate> 

@property (assign) IBOutlet NSWindow *window; 

@property (retain) id dataModel; 

@end 

और यहाँ मेरे AppDelegate कार्यान्वयन दिखता है की तरह है:: यहाँ मेरी AppDelegate हैडर कैसा दिखता है

#import "SOAppDelegate.h" 

@implementation SOAppDelegate 

@synthesize window = _window; 
@synthesize dataModel = _dataModel; 

- (void)dealloc 
{ 
    [_dataModel release]; 
    [super dealloc]; 
} 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 

    // Make some fake data for our source list. 
    NSMutableDictionary* item1 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 1", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 2", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item2_1 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 2.1", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item2_2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 2.2", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item2_2_1 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 2.2.1", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item2_2_2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 2.2.2", @"itemName", [NSMutableArray array], @"children", nil]; 
    NSMutableDictionary* item3 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Item 3", @"itemName", [NSMutableArray array], @"children", nil]; 

    [[item2_2 objectForKey: @"children"] addObject: item2_2_1]; 
    [[item2_2 objectForKey: @"children"] addObject: item2_2_2]; 

    [[item2 objectForKey: @"children"] addObject: item2_1]; 
    [[item2 objectForKey: @"children"] addObject: item2_2]; 

    NSMutableArray* dataModel = [NSMutableArray array]; 

    [dataModel addObject: item1]; 
    [dataModel addObject: item2]; 
    [dataModel addObject: item3]; 

    self.dataModel = dataModel; 
} 

@end 

वहाँ नकली डेटा संरचना मैं बनाया करने के लिए कोई विशेष महत्व है, मैं बस के साथ कुछ दिखाना चाहता था कुछ उप-स्तर, इत्यादि। केवल एक चीज जो मायने रखती है वह है कि आपके डेटा में कुंजी (इस मामले में नकली डेटा) के साथ इंटरफ़ेस बिल्डर लाइन में बाइंडिंग में निर्दिष्ट प्रमुख पथ

फिर चुनें MainMenu.xib फाइल ई।

  1. उपयोग वस्तु लाइब्रेरी (Ctrl-Cmd-ऑप्ट 3) अपने .xib के लिए एक NSTreeController जोड़ने के लिए: आईबी संपादक में, निम्न चरणों का पालन करते हैं।
  2. NSTreeController चयन करें, और गुण निरीक्षक (Cmd-ऑप्ट 4) का उपयोग कर सेट कुंजी पथ> बच्चेchildren (इस उदाहरण के लिए, अपने डेटा के लिए, यह होना चाहिए जो कुछ बच्चे ऑब्जेक्ट की श्रेणी देता है।)
  3. NSTreeController अभी भी चयनित, बाइंडिंग इंस्पेक्टर (Cmd-ऑप्ट 7) का उपयोग dataModel
  4. अगला की एक मॉडल कुंजी पथ के साथ, AppDelegate को सामग्री सरणी बाध्य करने के लिए वस्तु लाइब्रेरी (Ctrl-Cmd- का उपयोग के साथ ऑप्ट -3) अपने .xib पर एक NSOutlineView जोड़ने के लिए।
  5. खिड़की (विंडो के आम तौर पर पूरे ऊंचाई, बाएं हाथ की ओर के खिलाफ फ्लश)
  6. अंदर अपनी संतुष्टि के लिए यह व्यवस्था NSOutlineView का चयन करें (ध्यान दें कि पहली बार जब आप उस पर क्लिक करें, आप की संभावना का चयन किया है NSScrollView जिसमें यह शामिल है। इसे दूसरी बार क्लिक करें और आप NSOutlineView पर ड्रिल-डाउन कर लेंगे। ध्यान दें कि यह बहुत आसान है यदि आप आईबी संपादक के बाईं ओर वाले क्षेत्र को विस्तृत करते हैं जहां सभी ऑब्जेक्ट्स हैं - - यह आपको वस्तुओं को पेड़ के रूप में देखने की अनुमति देता है, और नेविगेट करता है और उन्हें इस तरह से चुनता है।
    • सामग्री मोड: View Based
    • कॉलम: 1
    • हाइलाइट: Source List
  7. )
  8. गुण निरीक्षक (Cmd-ऑप्ट 4) का उपयोग करते हुए NSOutlineView सेट
  9. बाइंडिंग इंस्पेक्टर (सीएमडी-ऑप्ट -7) बाइंड का उपयोग करना "सह ntent "टू" ट्री कंट्रोलर ", कंट्रोलर कुंजी: व्यवस्थित ऑब्जेक्ट्स (यह वह जगह है जहां व्यू-आधारित एनएसटीबल व्यू/NSOutlineViews का व्यवहार एनएससीएल-आधारित वाले से अलग हो जाता है)
  10. ऑब्जेक्ट लिस्ट (# 6 में उल्लिखित) में, विस्तृत करें NSOutlineView के पदानुक्रम देखें और Static Text - Table View Cell का चयन करें।
  11. Table Cell View लिए बाइंडिंग इंस्पेक्टर (Cmd-ऑप्ट 7) बाँध मूल्य का उपयोग करना, मॉडल की पथ: objectValue.itemName (मैं नकली डेटा में itemName का उपयोग किया है, तो आप का उपयोग करने के के नाम से जो भी कुंजी पत्राचार किया चाहेगा अपने डेटा आइटम)

सहेजें। चलाएँ। आप एक स्रोत सूची देखना चाहिए, और एक बार आप बच्चों के साथ नोड्स का विस्तार किया है, तो आप कुछ इस तरह देख सकते हैं:

enter image description here

आप एप्पल डेवलपर कार्यक्रम में हैं, तो आप का उपयोग करने में सक्षम होना चाहिए WWDC 2011 Videos। व्यू-आधारित एनएसटीबल व्यू (और एनएसओटलाइन व्यू) के साथ काम करने के लिए विशेष रूप से समर्पित एक है और इसमें बाइंडिंग का बहुत अच्छा कवरेज शामिल है।

आशा है कि मदद करता है!

+1

FYI करें WWDC 2011 वीडियो सत्र 120 देखें आधारित NSTableView शीर्षक है। – jemeshsu

+1

उन लोगों के लिए, जो इसका उपयोग करते हैं: यह भी विचार करें: http://stackoverflow.com/questions/7095703/binding-view-based-nsoutlineview-to-core-data – bijan

+0

क्या यह तरीका तेंदुए और हिम तेंदुए में भी चल सकता है? – arufian

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