[英]cannot find protocol declaration with my custom delegate
我設置的代表遇到一個奇怪的問題。 我得到的錯誤是“找不到'SearchViewDelegate的協議聲明”
ListViewController.h
#import "SearchView.h"
@class SearchView;
@protocol SearchViewDelegate <NSObject>
@optional
- (void)didTapSearchButton:(SearchView *)searchView;
@end
@interface TaskListViewController : UIViewController <UITableViewDelegate,UITableViewDataSource, UITextFieldDelegate>{
SearchView *searchView;
}
@property(nonatomic, assign) id<SearchViewDelegate> delegate;
ListViewController.m
- (IBAction)didTapSearchButton
{
NSString *searchTerm = searchView.searchField.text;
if ([searchTerm isEqualToString:@""]) {
[self.view endEditing:YES];
return ;
}
[searchView resignFirstResponder];
NSArray *results = [[CoreDataManager sharedInstance] fetchTaskByName:searchTerm];
[tasks removeAllObjects];
[tasks addObjectsFromArray:results];
[self.view endEditing:YES];
[taskTable reloadData];
}
SearchView.h
#import <UIKit/UIKit.h>
@interface SearchView : UIView <UITextFieldDelegate, UISearchBarDelegate, SearchViewDelegate> // <- where the protocol error occurrs
@property (nonatomic, strong) UITextField *searchField;
@property (nonatomic, strong) UIButton *searchButton;
@end
我以為我正確地聲明了委托人以及一切。
這是我要在searchView.m中調用委托方法的地方:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.searchField.delegate didTapSearchButton:self];
[textField resignFirstResponder];
return YES;
}
您應該在SearchView.h中具有委托協議聲明(假設您使用的是SearchViewDelegate)。 這是委托模式的標准方式。
如果錯誤是在SearchView.h中,我認為您需要添加
#import "TaskListViewController.h"
到標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.