我在将搜索栏文本传递给弹出视图时遇到了一些问题。流程是这样的:
- 父视图有一个带有 uisearchbar 的工具栏
- 父视图通过 segue 连接到另一个子类 uiviewcontroller,并将其显示为搜索栏中的弹出窗口
- 弹出视图控制器使用表格视图来显示我想要过滤的数据(表格视图已设置并且工作正常,过滤结果的方法已设置并且工作正常)。
- 父视图是搜索栏的代表,每次更改搜索词时都会收到文本
如何将搜索词传递给弹出框?我在父视图中设置了一个自定义委托,其方法应将搜索词传递给委托方法,但该方法未在弹出窗口中调用。
*我最好的猜测是我需要在某个地方指定弹出框使用我的自定义委托(即声明 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;