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