当前位置 : 主页 > 手机开发 > ios >

ios – 无法在目标c中设置UITableView动态的高度

来源:互联网 收集:自由互联 发布时间:2021-06-11
我创建了一个iPad应用程序,其中我使用searchBar,searchBar数据来自数据库,我将它存储在一个名为tableData的数组中. 在此之后我将这个tabledata数组传递给名为myTableView的tableView,我在didLoad方法中
我创建了一个iPad应用程序,其中我使用searchBar,searchBar数据来自数据库,我将它存储在一个名为tableData的数组中.

在此之后我将这个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个数据,但高度仍在修复.

正如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;

如果这对您有用,请告诉我.

网友评论