Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标-c在没有数据显示时删除表格视图_Ios_Objective C_Uitableview_Tableview - Fatal编程技术网

Ios 目标-c在没有数据显示时删除表格视图

Ios 目标-c在没有数据显示时删除表格视图,ios,objective-c,uitableview,tableview,Ios,Objective C,Uitableview,Tableview,目前在我的应用程序中,当我的表视图中没有数据显示时,它会显示一个非常高的空白,我希望它消失 我需要一种方法,以编程方式将高度更改为0,或者完全从布局流中隐藏视图(这样在没有数据的情况下不会影响其他UI组件)。似乎无论我采取什么方法,我都有一个丑陋的白色空间。我只能假设它的高度,因为我对桌子的高度限制是500。我试图通过编程方式删除此项,但运气不佳,只需要一些帮助 我的代码: if([theData count] <= 0) { CGRect frame = self.Scr

目前在我的应用程序中,当我的表视图中没有数据显示时,它会显示一个非常高的空白,我希望它消失

我需要一种方法,以编程方式将高度更改为0,或者完全从布局流中隐藏视图(这样在没有数据的情况下不会影响其他UI组件)。似乎无论我采取什么方法,我都有一个丑陋的白色空间。我只能假设它的高度,因为我对桌子的高度限制是500。我试图通过编程方式删除此项,但运气不佳,只需要一些帮助

我的代码:

if([theData count] <= 0) {    
    CGRect frame = self.ScrollView.frame;
    frame.size.height = 0;
    self.TableView.frame = frame;
}

if([数据计数]正如您已经提到的,TableView上的高度约束设置为500。创建TableView高度约束的
IBOutlet
,比如说
tableViewHeightConstraint
。最后,为了将TableView高度框架设置为0,您可以使用数据源的
didSet
方法

var theData : [whatever_your_data_type] {
    didSet {
        if theData.count == 0 {
            self.tableViewHeightConstraint.constant = 0
            self.tableView.layoutIfNeeded()
        }
        else {
            if self.tableViewHeightConstraint.constant == 0 {
                self.tableViewHeightConstraint.constant = 500
                self.tableView.layoutIfNeeded()
            }
        }
    }
}
目标C中的代码

将setter写入数组。如果数组名称为数据

-(void)setTheData:(NSMutableArray *)theData {
    if(self.theData.count == 0) {
        self.tableViewHeightConstraint.constant = 0;
        [self.tableView layoutIfNeeded];
    }
    else {
        if(self.tableViewHeightConstraint.constant == 0) {
            self.tableViewHeightConstraint.constant = 500;
            [self.tableView layoutIfNeeded];
        }
    }
}
编辑2:

步骤1:打开包含tableView的xib/故事板

步骤2:在xib/情节提要中选择tableViewHeight约束

步骤3:现在控制从高度拖动约束到拥有tableView的viewController


使用数组的setter来决定是否显示tableView的逻辑是我想要传达的逻辑。您可以使用此逻辑隐藏tableView/将帧设置为0/将高度约束设置为0或任何您想要使用的内容:)

正如您已经提到的,tableView上的高度约束设置为500。创建tableView高度约束的
IBOutlet
,比如说
tableViewHeightConstraint
。最后,为了将tableView的框架高度设置为0,您可以使用数据源的
didSet
方法

var theData : [whatever_your_data_type] {
    didSet {
        if theData.count == 0 {
            self.tableViewHeightConstraint.constant = 0
            self.tableView.layoutIfNeeded()
        }
        else {
            if self.tableViewHeightConstraint.constant == 0 {
                self.tableViewHeightConstraint.constant = 500
                self.tableView.layoutIfNeeded()
            }
        }
    }
}
目标C中的代码

将setter写入数组。如果数组名称是数据

-(void)setTheData:(NSMutableArray *)theData {
    if(self.theData.count == 0) {
        self.tableViewHeightConstraint.constant = 0;
        [self.tableView layoutIfNeeded];
    }
    else {
        if(self.tableViewHeightConstraint.constant == 0) {
            self.tableViewHeightConstraint.constant = 500;
            [self.tableView layoutIfNeeded];
        }
    }
}
编辑2:

步骤1:打开包含tableView的xib/故事板

步骤2:在xib/情节提要中选择tableViewHeight约束

步骤3:现在控制从高度拖动约束到拥有tableView的viewController


使用数组的setter来决定是否显示tableView的逻辑是我想要传达的逻辑。您可以使用此逻辑隐藏tableView/将框架设置为0/将高度约束设置为0或任何您想要使用的内容:)

您可以检查数组计数并将表rect设置为0,如下所示

- (void)viewDidLoad {
    [super viewDidLoad];
    self.array =[NSMutableArray array];
    // Do any additional setup after loading the view, typically from a nib.
    if (self.array.count ==0)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.myTable.frame = CGRectZero;
        });
    }
}

我已经用viewDidLoad编写了代码。您可以在代码中放置所需的位置。

您可以检查数组计数并将表rect设置为零,如下所示

- (void)viewDidLoad {
    [super viewDidLoad];
    self.array =[NSMutableArray array];
    // Do any additional setup after loading the view, typically from a nib.
    if (self.array.count ==0)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.myTable.frame = CGRectZero;
        });
    }
}

我已经用viewDidLoad编写了代码。您可以在代码中放置所需的位置。

在tableview下面有任何控件吗?如果否,则只需为tableview设置alpha 0和userinteraction no。我会:(,在表下面我有一个指向视图的链接,该视图显示该数据对象的“所有列表”。我试图隐藏的视图仅显示最近的4或5。确定这样做-如果(self.youraray.count==0){dispatch\u async(dispatch\u get\u main\u queue()^{self.myTable.frame=CGRectZero;};}或者-if(theData.count@IceCode)呢?我确实尝试过,隐藏的(我假设是这样的)工作原理类似于在web浏览器中隐藏某些仍在影响DOM的组件。我希望高度消失,空白消失。tableview下是否有任何控件?如果没有,则只需为tableview设置alpha 0和userinteraction no。我有:(,在表下,我有一个指向显示“所有列表”的视图的链接)我试图隐藏的对象只显示最近的4或5。好的,这样做-如果(self.yourray.count==0){dispatch_async(dispatch_get_main_queue(),^{self.myTable.frame=CGRectZero;}}或者-如果(data.count@IceCode)我尝试过,隐藏的(我假设是这样)其工作原理类似于在web浏览器中隐藏某些仍在影响DOM的组件。我希望去掉高度和空白。我更同意这种方法,OP应该修改高度约束,而不仅仅是将其整个帧设置为0。@nsganster:Thank u:)你能帮我用OBJ-C写这个吗?我不是在写swift@goredefex给我一个minute@SandeepBhandari非常感谢你。我唯一不完全理解的是你如何将约束设置为IBOutlet。这让我很困惑。你可以发布或帮助提供的任何链接?我更同意这种方法,OP应该修改高度约束int,而不是将整个帧设置为0。@nsganster:谢谢你:)你能帮我用OBJ-C写这个吗?我不是在写swift@goredefex给我一个minute@SandeepBhandari非常感谢。我唯一不完全理解的是你是如何将约束设置为IBOutlet的。这让我很困惑。你可以发布或提供任何链接吗?