找不到协议声明自定义协议委托 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,因为它就是这样。

委托协议中的方法应包含发送者和 willdidshould 三个词之一。如果不是,至少它应该命名它期望返回的内容。 -(NSString *)postbackType; 应该是 -(NSString *)postbackTypeForSendSMSViewController:(SendSMSViewController*)controller;

【讨论】:

感谢您的建议。也许你可以进一步帮助我。我有 3 个视图。用户浏览每个视图,从 1 到 2 到 3。然后在第三个视图中选择某些内容,然后数据应该返回到 popBackToRootViewController 上的第一个视图。这一切都在导航控制器中......过去几天我花了很多时间试图解决它......并且知道我发现的教程甚至与我的情况相似。 @MrPink - 三视图设置的设计可能更适合它自己的问题。可能需要比评论允许的更长的回复。

以上是关于找不到协议声明自定义协议委托 iphone的主要内容,如果未能解决你的问题,请参考以下文章

自定义协议委托为零

Swift-自定义 UITableViewCell 委托给 UIViewController 只有一个协议有效

STM8单片机串口同时识别自定义协议和Modbus协议

如何将自定义 WCF 协议通道添加到现有绑定

使用带有自定义协议的 Yandex-tank

通过点击带有协议的滑出菜单过滤 UITableView 提要