找不到协议声明自定义协议委托iphone

时间:2011-08-05 10:27:27

标签: iphone objective-c ios cocoa-touch ios4

慢慢但肯定地在iphone上获得了这个委托和协议的东西,但是我无法理解这个错误。

我在第一个viewcontroller中声明了我的协议。

在第二个视图控制器中,我尝试在将其导入头文件后将其添加到顶部,但无法找到它。请参阅下面的代码。

// 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

1 个答案:

答案 0 :(得分:2)

这肯定很奇怪。你试过重启Xcode吗?当我添加新文件时,Xcode习惯不为我编制符号索引。

您还应该了解您的命名约定。 SendSMS并不是一个好的类名,更多的是一个动作方法名。我会选择SendSMSViewController,因为它就是这样。

因此,SMSProtocol应该被命名为SendSMSViewControllerDelegate,因为它就是这样。

委托协议中的方法应包含发件人, 这三个词中的一个。如果不是,它应该命名它预期返回的内容。 -(NSString *)postbackType;应该是-(NSString *)postbackTypeForSendSMSViewController:(SendSMSViewController*)controller;