慢慢但肯定地在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
答案 0 :(得分:2)
这肯定很奇怪。你试过重启Xcode吗?当我添加新文件时,Xcode习惯不为我编制符号索引。
您还应该了解您的命名约定。 SendSMS
并不是一个好的类名,更多的是一个动作方法名。我会选择SendSMSViewController
,因为它就是这样。
因此,SMSProtocol
应该被命名为SendSMSViewControllerDelegate
,因为它就是这样。
委托协议中的方法应包含发件人,将, 或 这三个词中的一个。如果不是,它应该命名它预期返回的内容。 -(NSString *)postbackType;
应该是-(NSString *)postbackTypeForSendSMSViewController:(SendSMSViewController*)controller;
。