问题描述
- iOS设置的代理没有被调用
- SearchViewController.h
#import
#import ""search.h""@interface SearchViewController : UIViewController
@property (nonatomicstrong) id delegate;
@end
SeachViewController.m
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (_searchBar.text.length == 0) {
[self setSearchControllerHidden:YES];
}
else
{
_searchController.searchText = _searchBar.text;
//发送消息
if ([self.delegate respondsToSelector:@selector(searchTextChange)]) {
[self.delegate searchTextChange];
}[self setSearchControllerHidden:NO];
}
}
SearchResultController.m
- (void)viewDidLoad {
[super viewDidLoad];SearchViewController *searchViewVC = [[SearchViewController alloc]init];
searchViewVC.delegate = self;
self.resultList = [[NSMutableArray alloc]initWithObjects:@""1""@""2""@""3""@""4"" nil];
} - (void)searchTextChange
{
NSLog(@""%@""self.searchText);
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
解决方案
使用代理注意,一般代理有weak或者assign。
自己写好协议@protocol xxxx
SearchViewController.h里对代理声明时最好@property (nonatomicassign) i<协议>d delegate;
使用的时候:SearchResultController类要实现代理,除了searchViewVC.delegate = self;还要在@interface SearchResultControlle<代理协议>
最后是使用代理方法
解决方案二:
IOS 设置代理
解决方案三:
你要设置self.delegate=searchbar的协议啊
解决方案四:
delegate没类型,也没有@protocol声明协议吧,而且也没声明delegate对象。你找个delegate的demo看一下吧
解决方案五:
不多说了,给你补充下代码
SearchViewController.h
#import
#import ""search.h""
**@protocol SearchViewControllerDelegate
- (void)searchTextChange;@end**@interface SearchViewController : UIViewController@property (nonatomicassign) iddelegate;@end
然后在
SearchResultController.h 头文件里遵守这个协议
@interface SearchResultController : UIViewController
解决方案六:
@property (nonatomicassign) id delegate;//代理一般这个设置
在新建控制器的时候searchViewVC.delegate = self; 代表 self 这个控制器遵循了SearchViewControllerDelegate