我有一個NSMutableArray
顯示在UITableView
,我在那裏添加了一些元素。如何在uitableview中添加搜索欄?
例如,元素名稱分別是First,FirstTwo,Second,SecondTwo,Third,ThirdTwo。
現在我想在屏幕上添加一個搜索欄。在那個搜索欄中,當我輸入F時,表格應該只顯示First和FirstTwo。
我該怎麼做?
我有一個NSMutableArray
顯示在UITableView
,我在那裏添加了一些元素。如何在uitableview中添加搜索欄?
例如,元素名稱分別是First,FirstTwo,Second,SecondTwo,Third,ThirdTwo。
現在我想在屏幕上添加一個搜索欄。在那個搜索欄中,當我輸入F時,表格應該只顯示First和FirstTwo。
我該怎麼做?
最好的方法來得到這一點是通過遵循教程
over here
over here。 你正在尋找的部件,是這樣的:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[tableData removeAllObjects];// remove all data that belongs to previous search
if([searchText isEqualToString:@""]searchText==nil){
[myTableView reloadData];
return;
}
NSInteger counter = 0;
for(NSString *name in dataSource)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
{
if(r.location== 0)//that is we are checking only the start of the names.
{
[tableData addObject:name];
}
}
counter++;
[pool release];
}
[myTableView reloadData];
}
+1因爲您的鏈接已經死亡而離開代碼。 – 2012-06-21 13:46:20
添加了新鏈接。 – Joetjah 2013-04-10 07:11:07
我想從webservice獲取數據。我可以使用相同的代碼嗎?感謝您的鏈接。 – 2013-06-08 08:28:39
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchBar.delegate = self;
self.tableView.tableHeaderView = searchBar;
我做到了我自己,它是工作的精絕。
聲明兩個可變數組。一個包含所有數據,另一個存儲過濾的數據。這裏的searchuser是搜索欄插座。 aray是存儲所有數據的主要數組。將searchbar的大寫屬性設置爲句子,以便這可以正常工作。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[searchuser.text lowercaseString]);
filteredarray=[[NSMutableArray alloc]init];
int l=(int)[searchuser.text length];
if (l>0)
{
NSMutableString * data=[[NSMutableString alloc]init];
int a=(int)[aray count];
for (int i=0;i<=a-1;i++)
{
data=[aray objectAtIndex:i];
if ([searchuser.text isEqualToString:data])
{
[filteredarray addObject:data];
}
if ([data length]>l)
{
NSMutableString * string=[[NSMutableString alloc]initWithString:[data substringWithRange:NSMakeRange(0, l)]];
if ([searchuser.text isEqualToString:string])
{
[filteredarray addObject:data];
}
}
}
}
else
{
filteredarray=aray;
}
[tableview reloadData];
}
如果您使用的是搜索欄。那麼您可以使用搜索欄的代理方法搜索您的表格視圖的包含
(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
// myArray is main array for Table View
// tempMainArray which store myArray Data
myArray = [[NSMutableArray alloc]initWithArray:tempMainArray];
NSMutableArray *searchArray = [[NSMutableArray alloc]init];
[searchArray removeAllObjects];// remove all data that belongs to previous search
if([searchText isEqualToString:@""]|| searchText==nil){
[myArray removeAllObjects];
myArray = tempMainArray;
[_objTableView reloadData];
return;
}
NSInteger counter = 0;
for(NSString *name in myArray)
{
NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
{
if(r.location== 0)//that is we are checking only the start of the names dynamicaly.
{
[searchArray addObject:name];
}
}
counter++;
}
if (searchArray.count > 0) {
[myArray removeAllObjects];
myArray = searchArray;
[_objTableView reloadData];
}
else
{
[myArray removeAllObjects];
myArray = tempMainArray;
[_objTableView reloadData];
}
}
您可以改爲使用UISearchController。 https://www.raywenderlich.com/113772/uisearchcontroller-tutorial – PrafulD 2016-07-15 13:31:27