在iPhone中隐藏/显示UITableView?

时间:2012-11-07 06:43:21

标签: iphone xcode uitableview

我需要在某些情况下显示/隐藏UITableView。但有时它运行得非常好。但有时tableView不会被隐藏。

如果存在数组数据我在UITableView.But中填充它如果数组为null我显示带有文本“未找到数据”的标签..这是完美的,但如果我反复这样做,那么在我的TableView的数据标签文本显示而不隐藏tableView ..无法理解我出错的地方..

这是我写的代码......

if([arr count]==0)
{
    lblError.text=@"";
    lblError  = [[UILabel alloc] init];
    [lblError setFrame:CGRectMake(0,390,320,200)];
    lblError.textAlignment=UITextAlignmentLeft;
    lblError.backgroundColor = [UIColor clearColor];
    lblError.text = @"Results not found";
    lblError.textColor = [UIColor redColor];
    lblError.shadowColor = [UIColor blackColor];
    lblError.font = [UIFont fontWithName:@"Verdana-Italic" size:15];      
    [self.view addSubview:lblError];
    tableView.hidden=YES;
    [tableView removeFromSuperview];
    tableView=nil;

 }
else
{
     sections=[[NSMutableArray alloc] init];
    for(int s=0;s<1;s++)
    {
        NSMutableArray *section=[[NSMutableArray alloc] init];
        for(int i=0;i<[arr1 count];i++)
        {
            Item *item=[[Item alloc] init];
            NSString *name=[[arr objectAtIndex:i]objectForKey:@"Name"];
            item.Name=name;
            [section addObject:item];

        }
        [sections addObject:section];

    }
    tableView=[[UITableView alloc]initWithFrame:CGRectMake(0,430,320,200) style:UITableViewStylePlain];
    tableView.delegate = self;
    tableView.dataSource = self;
    [self.view addSubview:tableView];  
    [tableView release];

}

3 个答案:

答案 0 :(得分:0)

为什么要在TableView方法中分配else?您只需在TableViewViewDidLoad中分配ViewWillAppear即可。然后隐藏它或根据您的需要取消隐藏它。也不要删除TableView

答案 1 :(得分:0)

在您想要隐藏

的情况下尝试此操作
tableName.hidden = YES;

尝试取消隐藏/显示

tableName.hidden = NO;

答案 2 :(得分:0)

我已经通过将tableView的委托和dataSource分配给nil并再次创建它来解决它

tableView.delegate = nil;
tableView.dataSource = nil;

if([arr count]==0)
{
lblError.text=@"";
lblError  = [[UILabel alloc] init];
[lblError setFrame:CGRectMake(0,390,320,200)];
lblError.textAlignment=UITextAlignmentLeft;
lblError.backgroundColor = [UIColor clearColor];
lblError.text = @"Results not found";
lblError.textColor = [UIColor redColor];
lblError.shadowColor = [UIColor blackColor];
lblError.font = [UIFont fontWithName:@"Verdana-Italic" size:15];      
[self.view addSubview:lblError];
tableView.hidden=YES;
[tableView removeFromSuperview];
tableView=nil;

}
else
{
 sections=[[NSMutableArray alloc] init];
for(int s=0;s<1;s++)
{
    NSMutableArray *section=[[NSMutableArray alloc] init];
    for(int i=0;i<[arr1 count];i++)
    {
        Item *item=[[Item alloc] init];
        NSString *name=[[arr objectAtIndex:i]objectForKey:@"Name"];
        item.Name=name;
        [section addObject:item];

    }
    [sections addObject:section];

}
tableView=[[UITableView alloc]initWithFrame:CGRectMake(0,430,320,200) style:UITableViewStylePlain];
tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:tableView];  
[tableView release];

}