如何在视图中为子视图中包含的控件分配委托?

时间:2012-03-01 23:35:06

标签: objective-c uiview uisearchbar

我有一个包含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位于包含的视图中,我是否已正确分配了委托?

1 个答案:

答案 0 :(得分:1)

我可能会实现一个多级委托系统。您的TradeFindHeaderViewController_iPhone类将注册为UISearchBar的委托,然后在TradeFindViewController_iPhone类中调用委托方法。

此解决方案有助于保持整个设计非常模块化,并且还可以防止跨类破坏(更改对象的名称)。

这可以解决您未调用委托方法的问题。

希望这有一些帮助。

约什