【问题标题】:Cannot dismiss the Search view无法关闭搜索视图
【发布时间】:2012-08-27 08:43:23
【问题描述】:

我有一个带有 tableview 和 searchbar 的父类,它是 tableview 控制器的子类。 searchBar 和 searchdisplaycontroller 的委托设置在从 UISearchdisplaycontroller 继承的单独类中。 tableview 和 searchbar 的数据源和委托在此类中单独处理。这些类在 ARC 下。

因此,当用户点击搜索时,控件会从 FilesListController(父)类转移到此类。现在,当用户点击取消按钮时,在此类中设置的搜索栏委托,即

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar  

被调用,但没有达到关闭全屏搜索表视图并返回父视图控制器的目的。但是,如果我不在搜索类中编写此委托,它可以正常工作。我已经在 xib 和调用中设置了搜索栏代表:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

像这样:

self.searchResultsTableView.delegate = self;
self.searchResultsTableView.dataSource = self;
[parentFileViewController.searchDisplayController setDelegate:self];

我哪里错了?提前致谢。

【问题讨论】:

  • [self.searchDisplayController setActive:NO animated:YES];
  • 嘿,谢谢@jussi .. 它有效!!!但它为什么不自己解散呢?这就像我们在强制 searchviewcontroller 关闭。
  • 因为有些人想在解雇控制器之前存储一些信息。我会将其发布为答案。

标签: objective-c ios uitableview uisearchbar uisearchdisplaycontroller


【解决方案1】:

如果您想用 SearchBarController 关闭 UISearchBar,只需使用以下代码:

[self.searchDisplayController setActive:NO animated:YES];

【讨论】:

    【解决方案2】:

    你应该在委托函数中实现 resign 响应者,即

    - (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar {
          [searchBar resignFirstResponder];
     }
    

    【讨论】:

    • 这只是关闭键盘,但不会关闭搜索视图和取消按钮。
    【解决方案3】:

    在应用程序运行期间的任何时候都可能出现内存警告,您必须假设会发生内存警告并且必须重新创建视图和一次性对象。

    我们通过将数组设置为 nil 来处理这种情况:

    - (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    
    if([self isViewLoaded] && self.view.window == nil)
    {
        self.view = nil;
        keys = nil;
        names = nil;
        errorDuringNetworkCall = nil;
    }
    }
    

    并在执行 segue 操作之前关闭搜索栏 tableview:

    [self performSegueWithIdentifier:@"navigateToNextScreen" sender:self];
    self.searchBar.text = @"";
    [self.searchDisplayController setActive:NO animated:YES];
    

    在收到内存警告后,再次调用 viewDidLoad 方法并填充数组,搜索栏将继续有用。正常工作

    【讨论】:

    • 我根本不认为这是在回答问题
    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多