2012-05-07 118 views
0

我创建了SearchBarViewUIView的子类,并添加了UISearchBar作为其子视图。在SearchBarView(从searchBarSearchButtonClicked)呼叫removeFromSuperview后,UISearchBar不消失。我试图在SearchBarView上拨打removeFromSuperview从我创建SearchBarView的地方,但它没有帮助。任何想法为什么?无法删除UISearchBar

#import <UIKit/UIKit.h> 
@interface SearchBarView : UIView <UISearchBarDelegate> { 
    UISearchBar *querySearchBar; 
} 
@end 

#import "SearchBarView.h" 
@implementation SearchBarView 
- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     querySearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,frame.size.width,44)]; 
     querySearchBar.delegate = self; 
     [self addSubview:querySearchBar]; 
    } 
    return self; 
} 

#pragma mark - 
#pragma mark UISearchBarDelegate methods 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [self removeFromSuperview];  
} 

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; 
    [searchBar resignFirstResponder]; 
    [searchBar setShowsCancelButton:NO animated:YES]; 
} 

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar 
{ 
    [searchBar setShowsCancelButton:NO animated:YES]; 
    return YES; 
} 

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar 
{ 
    [searchBar setShowsCancelButton:YES animated:YES]; 
    return YES;  
} 
@end 

SearchBarView创建如下:

SearchBarView *searchBarView = [[SearchBarView alloc] initWithFrame:CGRectMake(0, 0, 480, 300)]; 
UIView *rootView = [[[[UIApplication sharedApplication] delegate] window] rootViewController].view; 
[rootView addSubview:searchBarView]; 
+0

我们可以看到代码,您添加SearchBarView到屏幕上,你试图将其删除,请。 –

+0

我添加了添加SearchBarView的代码。我在searchBarSearchButtonClicked上面移除它。它应该像这样工作,对吧? – maxgrinev

+0

你有没有试过[super removeFromSuperview]; –

回答

-2

尝试

[searchbar removefromsuperview]; 
+0

已经尝试过。没有帮助。 – maxgrinev

0

你的问题是

[self addSubview:querySearchBar]; 

如果添加searchcontroller到子视图,那么当你做这些这是行不通的。

[searchController.searchBar removeFromSuperview()] 

self.definesPresentationContext = true 

searchController.active = false 

我建议你做

presentViewController(searchController, animated: true, completion: nil) 

并尝试解雇searchController

[searchController.searchBar removeFromSuperview()]