Хотите добавить панель поиска на панель навигации при нажатии кнопки поиска на панели навигации

Я использую контроллер UItableView, я не могу добавить панель поиска на панель навигации. Я хочу, чтобы панель поиска появлялась при нажатии кнопки поиска на панели навигации. Как добавить кнопку поиска и панель поиска на панель навигации.


person Vishal    schedule 12.11.2013    source источник
comment
Вы используете раскадровки или используете код?   -  person Jakub    schedule 12.11.2013
comment
Я использую раскадровку   -  person Vishal    schedule 12.11.2013


Ответы (3)


добавьте это при нажатии кнопки => .m файл:

 UISearchBar  *sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,10,self.navigationController.navigationBar.bounds.size.width,self.navigationController.navigationBar.bounds.size.height/2)];
sBar.delegate = self;
[self.navigationController.navigationBar addSubview:sBar];

и добавьте этот => .h файл

@interface ViewController : UIViewController<UISearchBarDelegate>
person Yuyutsu    schedule 05.11.2014

чтобы сделать панель поиска такой, как эта, вы хотите вставить кнопку в контроллер панели навигации и установить фоновое изображение как search.png (ваше изображение). поэтому, когда пользователь нажимает на эту кнопку, цель будет открыта как searchbar. пожалуйста, проверьте приведенный ниже код для справки.

Прежде всего установите метод делегата в вашем .h файле.

@interface FriendsViewController : UIViewController <UISearchDisplayDelegate,UISearchBarDelegate,UIAlertViewDelegate>
 @property (nonatomic, strong) UIButton *searchButton;
 @property (nonatomic, strong) UIBarButtonItem *searchItem;
 @property (nonatomic, strong) UISearchBar *searchBar;
 @property (strong, nonatomic) UISearchController *searchController;
 @property (strong, nonatomic) UISearchDisplayController *d1;

затем нажмите кнопку «Вставить» на панели навигации.

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(279,9,25, 25)];
[btn setImage:[UIImage imageNamed:@"search"] //put here your searchimage
forState:UIControlStateNormal];
[btn setTitle:@"" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(clickme:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barbtn=[[UIBarButtonItem alloc]initWithCustomView:btn];
self.tabBarController.navigationItem.rightBarButtonItem=barbtn;
[self.tabBarController.navigationController.navigationBar setHidden:NO];

Теперь вам нужно установить searchcontroller на clickme метод вашей кнопки.

- (IBAction)clickme:(id)sender{
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 300, 44.0)];
searchBar.autoresizingMask =0;
searchBar.delegate = self;
searchBar.placeholder = @"Search for items...";
searchBar.showsScopeBar=YES;

UIView *searchBarWrapper = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
searchBarWrapper.autoresizingMask = 0;
[searchBarWrapper addSubview:searchBar];

self.searchItem = [[UIBarButtonItem alloc] initWithCustomView:searchBarWrapper];
self.tabBarController.navigationItem.leftBarButtonItem = self.searchItem;

self.navigationItem.rightBarButtonItem = nil;
self.navigationItem.titleView = nil;

  ////////////// ~ Search Display Controller as Object ~/////////////////////////////

self.d1 = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
self.d1.delegate = self;
self.d1.searchResultsDataSource = self;
self.d1.searchResultsDelegate = self;
self.d1.searchResultsTableView.rowHeight = 40;
self.d1.displaysSearchBarInNavigationBar = YES;
self.searchBar.translucent = NO;
self.searchBar.barTintColor = [UIColor grayColor];
self.d1.searchBar.tintColor = [UIColor blueColor];

[searchBar sizeToFit];

}

Барбуттон

когда вы нажимаете на значок поиска

введите описание изображения здесь

person Badal Shah    schedule 06.10.2015

Для кнопки поиска при необходимости можно использовать UIBarButtonSystemItemSearch.

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
                               initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
                               target:self
                               action:@selector(actionSearch:)];

и вы можете установить панель поиска как заголовок панели навигации

self.navigationItem.titleView = mySearchBar;
person david    schedule 12.11.2013