1

検索バーのテキストをポップオーバー ビューに渡すのに問題があります。流れは次のようになります。

  1. 親ビューには、uisearchbar を含むツールバーがあります
  2. 親ビューはセグエで別のサブクラス化された uiviewcontroller に接続され、これを検索バーからのポップオーバーとして表示します
  3. ポップオーバービューコントローラーは、テーブルビューを使用して、フィルタリングしたいデータを表示します(テーブルビューはセットアップされ、正常に動作し、結果をフィルタリングする方法はセットアップされ、正常に動作します)。
  4. 親ビューは検索バーのデリゲートであり、検索用語が変更されるたびにテキストを受け取ります

検索語をポップオーバーに渡すにはどうすればよいですか? 検索用語をデリゲート メソッドに渡すメソッドを使用して、親ビューでカスタム デリゲートをセットアップしましたが、そのメソッドはポップオーバーで呼び出されていません。

*私の推測では、ポップオーバーがカスタム デリゲートを使用することをどこかで指定する必要があると思われます (つまり、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;
4

1 に答える 1

0

ポップオーバー コントローラーでパブリック メソッド (またはプロパティ) を作成し、検索テキストが変更されるたびに、そのメソッドを使用して新しいテキストをポップオーバーに送信します。または、ポップオーバー コントローラーを検索バーのデリゲートとして作成します。

于 2012-12-18T17:00:41.467 に答える