我有一个包含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位于包含的视图中,我是否已正确分配了委托?
答案 0 :(得分:1)
我可能会实现一个多级委托系统。您的TradeFindHeaderViewController_iPhone类将注册为UISearchBar的委托,然后在TradeFindViewController_iPhone类中调用委托方法。
此解决方案有助于保持整个设计非常模块化,并且还可以防止跨类破坏(更改对象的名称)。
这可以解决您未调用委托方法的问题。
希望这有一些帮助。
约什