1

我在将搜索栏文本传递给弹出视图时遇到了一些问题。流程是这样的:

  1. 父视图有一个带有 uisearchbar 的工具栏
  2. 父视图通过 segue 连接到另一个子类 uiviewcontroller,并将其显示为搜索栏中的弹出窗口
  3. 弹出视图控制器使用表格视图来显示我想要过滤的数据(表格视图已设置并且工作正常,过滤结果的方法已设置并且工作正常)。
  4. 父视图是搜索栏的代表,每次更改搜索词时都会收到文本

如何将搜索词传递给弹出框?我在父视图中设置了一个自定义委托,其方法应将搜索词传递给委托方法,但该方法未在弹出窗口中调用。

*我最好的猜测是我需要在某个地方指定弹出框使用我的自定义委托(即声明 ThisView.delegate = self,但这是一个问题,因为子视图是由 segue 创建的)

以下是弹出框的显示方式:

- (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

Make a public method (or property) on the popover controller, and whenever the search text changes, send the new text to the popover using said method. Or you make the popover controller as the search bar's delegate.

于 2012-12-18T17:00:41.467 回答