找不到协议声明自定义协议委托 iphone
Posted
技术标签:
【中文标题】找不到协议声明自定义协议委托 iphone【英文标题】:cannot find protocol declaration custom protocol delegate iphone 【发布时间】:2011-08-05 10:27:26 【问题描述】:缓慢但肯定会在 iphone 上获取此委托和协议内容,但我无法理解此错误。
我已经在我的第一个视图控制器中声明了我的协议。
在第二个视图控制器中,我尝试在将其导入头文件后将其添加到顶部,但找不到它。请参阅下面的代码。
//发送短信
#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
【问题讨论】:
这应该很好用......这段代码似乎没有问题 我遇到了同样的问题,我只是在导航器中移动了文件,错误就消失了。 检查您包含的文件。这是两个相互包含的标头的症状。有时会导致此错误。 【参考方案1】:这肯定很奇怪。您是否尝试过重新启动 Xcode?当我添加新文件时,Xcode 习惯于不为我索引符号。
您还应该了解您的命名约定。 SendSMS
并不是一个好的类名,更像是一个动作方法名。我会选择SendSMSViewController
,因为它就是这样。
因此,SMSProtocol
应该被命名为 SendSMSViewControllerDelegate
,因为它就是这样。
委托协议中的方法应包含发送者和 will、did 或 should 三个词之一。如果不是,至少它应该命名它期望返回的内容。 -(NSString *)postbackType;
应该是 -(NSString *)postbackTypeForSendSMSViewController:(SendSMSViewController*)controller;
。
【讨论】:
感谢您的建议。也许你可以进一步帮助我。我有 3 个视图。用户浏览每个视图,从 1 到 2 到 3。然后在第三个视图中选择某些内容,然后数据应该返回到 popBackToRootViewController 上的第一个视图。这一切都在导航控制器中......过去几天我花了很多时间试图解决它......并且知道我发现的教程甚至与我的情况相似。 @MrPink - 三视图设置的设计可能更适合它自己的问题。可能需要比评论允许的更长的回复。以上是关于找不到协议声明自定义协议委托 iphone的主要内容,如果未能解决你的问题,请参考以下文章