0

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

如果存在数组数据,我将在 UITableView 中填充它。但如果数组为空,我将显示带有文本“未找到数据”的标签。这工作得很好,但如果我反复这样做,那么在我的 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];

}
4

3 回答 3

0

TableView你为什么在方法中分配你的else?您应该简单地分配TableViewinViewDidLoadViewWillAppear。然后根据您的需要隐藏或取消隐藏它。也不要删除TableView.

于 2012-11-07T06:50:04.910 回答
0

在你想隐藏的情况下试试这个

tableName.hidden = YES;

试试这个取消隐藏/显示

tableName.hidden = NO;
于 2012-11-07T08:00:43.810 回答
0

我已经通过先将 tableView 的委托和数据源分配给 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];

}
于 2012-11-08T08:34:01.230 回答