2012-03-25 18 views
69

से 'id ' को असाइन करने के लिए मेरे ऐप के दौरान, जब मैं ViewController.delegate = self सेट करता हूं तो मुझे अर्थपूर्ण समस्या चेतावनियां मिल रही हैं। मैंने इसी तरह की पोस्ट की खोज की है और पाया है लेकिन कोई भी मेरी समस्या को हल करने में सक्षम नहीं था। असंगत प्रकार 'व्यू कंट्रोलर * const_strong'

ViewController.m:

GameAddViewController *gameAddViewContoller = [[navigationController viewControllers] objectAtIndex:0]; 
gameAddViewContoller.delegate=self; 

जब .delegate=self स्थापित करने पर मुझे त्रुटि संदेश मिलता है।

GameAddViewController.h:

@protocol GameAddViewControllerDelegate <NSObject> 

- (void)gameAddViewControllerDidCancel:(GameAddViewController *)controller; 
- (void)gameAddViewController:(GameAddViewController *)controller didAddGame:(Game *) game; 

@end 

@interface GameAddViewController : UITableViewController <GameAddViewControllerDelegate> 
{ 
sqlite3   *pitchcountDB; 
NSString  *dbPath; 
} 
@property (nonatomic, strong) id <GameAddViewControllerDelegate> delegate; 
... 
@end 

ViewController.h:

#import "GameAddViewController.h" 

@class ViewController; 
@protocol ViewControllerDelegate <NSObject> 
- (void)ViewControllerDidCancel:(ViewController *)controller; 

@end 
@interface ViewController : UIViewController <ViewControllerDelegate> 
-(void) checkAndCreateFile; 
@end 

चेतावनी संदेश को हल करने किसी को भी सही दिशा में मुझे बात कर सकते हैं?

उत्तर

69

इस लाइन में:

gameAddViewContoller.delegate=self; 

सूचना है कि स्वयं प्रकार ViewController जो GameAddViewController प्रोटोकॉल के अनुरूप नहीं है की है।

+1

इसे ठीक करने के लिए मुझे क्या करने की ज़रूरत है। क्या गेम एड व्यू कंट्रोलर प्रोटोकॉल में मुझे कुछ बदलने की ज़रूरत है? –

+0

अच्छा, यह इस बात पर निर्भर करता है कि आप अपने प्रतिनिधि बनना चाहते हैं। GameAddViewController प्रोटोकॉल को कार्यान्वित कौन कर रहा है – giorashc

+0

GameAddViewController ViewController का बच्चा है और मैं ViewController में gameAddViewControllerDidCancel विधि को कार्यान्वित कर रहा हूं। जब मैं gameAddViewContoller.delegate = self सेट करता हूं तो त्रुटि संदेश ViewController में readyForSegue विधि से है। –

12

आप गलत स्थान पर < GameAddViewControllerDelegate> डाल रहे हैं। यह GameAddViewController पर नहीं जाता है, यह ViewController पर जाता है।

54

मेरे लिए क्या हो रहा समाप्त हो गया है कि मैं अपने हेडर फाइल पर @interface के लिए प्रतिनिधि जोड़ने नहीं किया गया है

उदाहरण

@interface TheNameOfYourClass : UIViewController <TheDelegatorClassDelegate> 

@end 
+0

यह मुझसे काम किया, ऊपर से !!! – NSPratik

3

यह मदद कर सकता है अन्य लोगों को जो Multipeer कनेक्टिविटी जोड़ रहे हैं के लिए सीधे एक ViewController करने के लिए। , भी

@interface myViewControllerName : UIViewController<MCSessionDelegate> 
0

अगर आप xx.m पर अपने प्रतिनिधि को परिभाषित है, लेकिन आप अन्य वर्ग में इसका इस्तेमाल करते हैं: myViewControllerName.h के शीर्ष पर जोड़ें '<MCSessionDelegate>'। आपको यह समस्या मिल सकती है। इसलिए, जब आवश्यक हो, तो बस xx.h पर प्रोटोकॉल परिभाषित करें।