2012-08-25 11 views
5

NSOutlineView सेल-आधारित-आधारित देखने के बाद, यह फ़ाइल-सिस्टम पेड़ के आइकन और शीर्षक प्रदर्शित नहीं करता है। यहां मेरा कोड:देखें-आधारित "स्रोत सूची" NSOutlineView आइटमों के आइकन और शीर्षक प्रदर्शित नहीं करते

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item { 
    if ([[tableColumn identifier] isEqualToString:@"name"]) 
     return [(ImageAndTextCell *)cell setTextFieldImage:[item icon]]; 
} 

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
    return [((ConstructorFSEntity *)item) title]; 
} 

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item { 
    if ([item isKindOfClass:[FSEntity class]]) { 
     return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self]; 
    } else { 
     return [outlineView makeViewWithIdentifier:@"DataCell" owner:self]; 
    } 
} 

और मेरे पास एक और सवाल है। सेल "डेटासेल", और "हेडरसेल" को समेकित आइटम (फ़ाइल सिस्टम की वस्तु का सरणी) को मूल फ़ोल्डर (समूह) के रूप में घोषित करें और इसे एक शीर्षक असाइन करें (उदाहरण के लिए, @ "रूट फ़ोल्डर") और पथ कक्षा। चूंकि, अब पिछली दृश्य-आधारित विधि, केवल "हेडरसेल" या "डेटासेल" में गणना की गई वस्तु प्रदर्शित की गई है और जब मैं "हेडरसेल" को कुछ मान निर्दिष्ट करने का प्रयास करता हूं, तो ऐप क्रैश हो रहा है। क्या आप इसमें मेरी सहायता कर सकते है?

उत्तर

4

खिताब और वस्तुओं के आइकन प्रदर्शित करने के लिए, तुम सिर्फ इस विधि

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item

बदलने की जरूरत है इस प्रकार है:

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item { 
    if (![item isKindOfClass:[FSEntity class]]) { 
     return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self]; 
    } else { 
     NSTableCellView *cellView = [outlineView makeViewWithIdentifier:@"DataCell" owner:self]; 
     [(ImageAndTextCell *)cellView.textField.cell setTextFieldImage:[item icon]]; 
     cellView.textField.stringValue = [((FSEntity *)item) title]; 
     return cellView; 
    } 
} 
+3

'NSTabelCellView' इसलिए उपलब्ध कराने पहले से ही एक संपत्ति' imageView' 'cellView.imageView.objectValue = [आइटम आइकन]' सेट करके बस छवि सेट कर सकते हैं। आपको SourceView उदाहरण से ImageAndTextCell क्लास की आवश्यकता नहीं है। – Stephan