検索バーのテキストをポップオーバー ビューに渡すのに問題があります。流れは次のようになります。
- 親ビューには、uisearchbar を含むツールバーがあります
- 親ビューはセグエで別のサブクラス化された uiviewcontroller に接続され、これを検索バーからのポップオーバーとして表示します
- ポップオーバービューコントローラーは、テーブルビューを使用して、フィルタリングしたいデータを表示します(テーブルビューはセットアップされ、正常に動作し、結果をフィルタリングする方法はセットアップされ、正常に動作します)。
- 親ビューは検索バーのデリゲートであり、検索用語が変更されるたびにテキストを受け取ります
検索語をポップオーバーに渡すにはどうすればよいですか? 検索用語をデリゲート メソッドに渡すメソッドを使用して、親ビューでカスタム デリゲートをセットアップしましたが、そのメソッドはポップオーバーで呼び出されていません。
*私の推測では、ポップオーバーがカスタム デリゲートを使用することをどこかで指定する必要があると思われます (つまり、ThisView.delegate = self を宣言しますが、子ビューはセグエによって作成されるため、これは問題です)。
ポップオーバーの表示方法は次のとおりです。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segueSearchResults"]) {
self.searchPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
self.searchPopover.delegate = self;//To avoid confusion, this is the popover's delegate to notify the parent view when it has closed, etc.
}
}
委任プロトコルは次のとおりです。
@class VideoViewController;
@protocol VideoViewDelegate <NSObject>
@required
- (void)searchTermChanged:(NSString *)value;
@end
@interface VideoViewController : UIViewController<UIScrollViewDelegate,UISearchBarDelegate,UISearchDisplayDelegate,UIPopoverControllerDelegate>{
__weak id <VideoViewDelegate> delegate;
}
@property (nonatomic, weak) id <VideoViewDelegate> delegate;