2011-08-05 275 views
1

慢慢地,但肯定在iphone上獲得這個委託和協議的東西,但我不明白這個錯誤。無法找到協議聲明自定義協議委託iphone

我已經在我的第一個視圖控制器中聲明瞭我的協議。

在第二個視圖控制器中,我嘗試將它添加到頂部,然後將其導入到頭文件中,並且找不到它。看到我的代碼如下。

// SendSMS

#import <UIKit/UIKit.h> 
#import "LoginPage.h" 
#import "MessageOptions.h" 

@protocol SMSProtocol <NSObject> 

-(NSString *)postbackType; 

@end 


@interface SendSMS : UIViewController <UITextViewDelegate, UITextFieldDelegate> { 

    id<SMSProtocol> delegate; 

    MessageOptions *messageOptions; 
    LoginPage *loginPage; 
    IBOutlet UITextField *phonenumber; 
    IBOutlet UITextView *smsBody; 
    IBOutlet UIScrollView *scrollview; 

} 

@property (nonatomic, retain) id<SMSProtocol> delegate; 

-(IBAction)LoadMessageOptions; 

@end 

然後我的第二個觀點

#import <UIKit/UIKit.h> 
#import "SendSMS.h" 

@interface ScheduledSMS : UIViewController <SMSProtocol>{ 



} 


-(IBAction)popBack; 

@end 
+0

什麼是錯誤? – taskinoor

+0

這應該很好...這個代碼似乎沒有問題 –

+0

我有同樣的問題,我只是在導航器中移動文件,錯誤消失了。 –

回答

2

這無疑是陌生的。你有沒有嘗試重新啓動Xcode?當我添加新文件時,Xcode有一種不爲我編制索引的習慣。

你也應該看看你的命名約定。 SendSMS並不是一個很好的類名,更多的是一個動作方法的名字。我會去SendSMSViewController,因爲那就是它。

由此可以得出結論,SMSProtocol應該被命名爲SendSMSViewControllerDelegate,因爲它就是這樣。

方法在委託協議應包含發送者和三個詞,或應該之一。如果不是,至少應該說出它期望返回的內容。 -(NSString *)postbackType;應該可能是-(NSString *)postbackTypeForSendSMSViewController:(SendSMSViewController*)controller;

+0

感謝您的意見。也許你可以進一步幫助我。我有3個意見。用戶遍歷每個視圖,1到2到3,然後在第三個視圖中選擇一些內容,然後數據應該回到popBackToRootViewController的第一個視圖。這些都在導航控制器中......我花了幾天的時間試圖解決這個問題...並且知道我發現的教程甚至與我的情況類似。 – MrPink

+0

@MrPink - 三個視圖設置的設計可能更適合於它自己的問題。可能需要更長的回覆,而不是評論允許。 – PeyloW