2012-07-13 8 views
5

मैं निम्नलिखित कोड का उपयोग अपने नियंत्रक से बाहर मेरी दृश्य प्राप्त करने का:यदि यह एक कस्टम क्लास है तो NSViewController का दृश्य प्राप्त करना?

CollectionItemView *myView = [self view]; 

यह बहुत अच्छी तरह से काम करता है, लेकिन मैं चेतावनी Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView मिलता है। मैं समझता हूं कि मुझे यह क्यों मिलता है, लेकिन क्या इसे अनदेखा करना ठीक है या क्या मुझे दृश्य संपत्ति को ओवरराइट करना चाहिए?

चक

उत्तर

2

आप यह सुनिश्चित करें कि [self view]CollectionItemView है, तो बस करो:

CollectionItemView *myView = (CollectionItemView*)[self view]; 

या (जो बेहतर है) आप का उपयोग कर सकते हैं:

id myView = [self view]; 
0

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

CollectionItemView *myView = nil; 
if ([[self view] isKindOfClass:[CollectionItemView class]) 
    self.view = (CollectionItemView*)[self view]; 

isKindOfClass परीक्षण के बिना छोटा संस्करण ठीक है।