2011-08-05 171 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