gpt4 book ai didi

ios - 无法在 objective-c 中动态设置 UITableView 的高度

转载 作者:可可西里 更新时间:2023-11-01 17:10:47 26 4
gpt4 key购买 nike

我创建了一个 iPad 应用程序,我在其中使用了 searchBar,其中 searchBar 数据来自数据库,我将其存储在一个名为 tableData 的数组中。

在此之后,我将这个 tabledata 数组传递给名为 myTableView 的 tableView,我在 didLoad 方法中声明了 TableView 的高度。

我希望 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 不会增加它的大小,在第二个图像中只有一个数据存在,但高度仍然是固定的。

screen screen

最佳答案

正如 Atulkumar V. Jain 所说,试试这个:在 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 方法中调整表格框架的大小如下:

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;

让我知道这是否适合您。

关于ios - 无法在 objective-c 中动态设置 UITableView 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com