我创建了一个iPad应用程序,其中我使用searchBar,searchBar数据来自数据库,我将它存储在一个名为tableData的数组中. 在此之后我将这个tabledata数组传递给名为myTableView的tableView,我在didLoad方法中
在此之后我将这个tabledata数组传递给名为myTableView的tableView,我在didLoad方法中声明了表视图的高度.
我希望tableView的高度根据表中元素的数量是动态的,
这是代码片段,
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { // only show the status bar’s cancel button while in edit mode sBar.autocorrectionType = UITextAutocorrectionTypeNo; // flush the previous search content [tableData removeAllObjects]; } - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { sBar.showsCancelButton = NO; [myTableView setHidden:TRUE]; } - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { [myTableView setHidden:FALSE]; [tableData removeAllObjects];// remove all data that belongs to previous search myTableView.backgroundColor=[[UIColor alloc]initWithRed:4.0 / 255 green:24.0 / 255 blue:41.0 / 255 alpha:1.0]; [self.view bringSubviewToFront:myTableView]; if([searchText isEqualToString:@""]||searchText==nil){ [myTableView setHidden:TRUE]; [myTableView reloadData]; return; } NSInteger counter = 0; for(NSString *name in arr) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch]; if(r.location != NSNotFound) { if(r.location== 0)//that is we are checking only the start of the naames. { [tableData addObject:name]; } } counter++; [pool release]; } [myTableView reloadData]; } - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { // if a valid search was entered but the user wanted to cancel, bring back the main list content [tableData removeAllObjects]; @try{ [myTableView reloadData]; } @catch(NSException *e){ } [sBar resignFirstResponder]; sBar.text = @""; } // called when Search (in our case “Done”) button pressed - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { [searchBar resignFirstResponder]; [myTableView reloadData]; }
在didLoad中声明myTableView:
myTableView.frame=CGRectMake(550, 00, 220,400);
看截图,
在第一个图像数据中,但是,tableView不会增加它的大小,而在第二个图像中只有1个数据,但高度仍在修复.
CGRect frame = myTableView.frame; frame.size.height = MIN(40 * [tableData count], 400); // 400 is the maximum height that the table view can have. You can change it to whatever you like myTableView.frame = frame;
如果这对您有用,请告诉我.