我有一个视图控制器,它包含一个UISearchBar
@interface TradeFindHeaderViewController_iPhone : UIViewController {
UISearchBar *searchBar;
}
#pragma mark - Properties
@property (nonatomic, retain) IBOutlet UISearchBar *searchBar;
#pragma mark - Methods
-(void) configureSearchBar;
@end
该控制器随后被初始化并存储在另一个控制器的属性中。
@interface TradeFindViewController_iPhone : TradeFindViewController<UISearchBarDelegate> {
TradeFindHeaderViewController_iPhone *_headerController;
}
#pragma mark - Properties
@property (nonatomic, retain) TradeFindHeaderViewController_iPhone *headerController;
@end
我希望此TradeFindViewController_iPhone接收UISearchBar代理事件,因此我分配其代理
-(void)configureTableHeader{
self.headerController=[[TradeFindHeaderViewController_iPhone alloc]initWithNibName:@"TradeFindHeaderView_iPhone" bundle: nil];
self.headerController.searchBar.delegate=self;
self.tableView.tableHeaderView=self.headerController.view;
}
但是,UISearchBar代表事件没有被调用。鉴于UISearchBar在包含的视图中,我是否正确分配了代表?
我可能会实现一个多级委托系统。您的TradeFindHeaderViewController_iPhone类将注册为UISearchBar的委托,然后在TradeFindViewController-iPhone类中调用委托方法。
这个解决方案有助于保持整个设计非常模块化,还可以防止类之间的中断(更改对象的名称)。
这应该可以解决不调用委托方法的问题。
希望这能有所帮助。
Josh