Tôi muốn tạo bảng tìm kiếm cho bảng của tôi trong bảng phân cảnh xcode, mọi thứ đều hoạt động đối với tôi và tôi không có bất kỳ lỗi nào, chỉ tìm kiếm không hoạt động.UISearchBar trong kịch bản Xcode
Tôi đã thấy hai hướng dẫn này nhưng vẫn không hoạt động. Tôi không thể tìm kiếm. hướng dẫn của tôi:
-http://stackoverflow.com/questions/9897171/uisearchbar-implemented-with-storyboards
-http://www.youtube.com/watch?v=IqDZHgI_s24
bạn sẽ vui lòng giúp tôi, Cảm ơn trước!
Đây là mã của tôi
CreateViewController.h
#import <UIKit/UIKit.h>
@interface CreateViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate>
{
// @property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
NSArray *datas;
NSMutableArray *displayItems;
IBOutlet UITableView * tableView;
IBOutlet UISearchBar * searchbar;
}
@end
CreateViewController.m
#import "CreateViewController.h"
@interface CreateViewController()
@end
@implementation CreateViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
datas = [NSMutableArray arrayWithObjects:@"Johan", @"Paul",@"George",@"Ringo", nil];
displayItems = [[NSMutableArray alloc] initWithArray:datas];
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [datas count];
}
- (UITableViewCell *)tableView:(UITableView *)atableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";//This is the identifier in storyboard
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
cell.textLabel.text = [datas objectAtIndex:indexPath.row];
return cell;
}
-(void)searchbar:(UISearchBar *)searchbar textDidChange:(NSString *)searchText{
if([searchText length] == 0){
[displayItems removeAllObjects];
[displayItems addObjectsFromArray:datas];
}else{
[displayItems removeAllObjects];
for(NSString * string in datas){
NSRange r = [string rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (r.location != NSNotFound){
[displayItems addObject:string];
}
}
}
[tableView reloadData];
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
}
@end
Cám ơn câu trả lời của bạn, nhưng vẫn không hoạt động! –
Chế độ xem bảng của bạn có hiển thị dữ liệu bạn đã đặt khi bạn khởi động ứng dụng không ?. Ý tôi là, "datas = [NSMutableArray arrayWithObjects: @" Johan ", @" Paul ", @" George ", @" Ringo ", nil];" –
có nó hiển thị chúng. –