Objective-c当没有数据显示时删除表格视图
当前在我的应用程序中,当我的表格视图中没有数据要显示时,它显示了一个非常高的空白区域,我希望它不见了。Objective-c当没有数据显示时删除表格视图
我需要一种编程方式将高度更改为0或从布局流程中完全隐藏视图(因此它在不存在数据时不会影响其他UI组件)。似乎不管我采取了什么方法,我有这个丑陋的高空白空间。我只能假设它,因为我在桌上的高度限制是500.我试图删除这个编程方式没有运气,只需要一些帮助。
我的代码:
if([theData count] <= 0) {
CGRect frame = self.ScrollView.frame;
frame.size.height = 0;
self.TableView.frame = frame;
}
我也曾尝试:
if([theData count] <= 0) {
self.TableView = nil
}
和其他一些无聊的事不值得一提。任何人都可以在这里给我一只手吗?我主要只是想在没有数据的情况下将整个桌子都丢掉。
正如您已经提到过,您对TableView的高度约束设置为500.创建IBOutlet
的tableView的高度约束可以说为tableViewHeightConstraint
。最后,以高度的tableView的帧设置为0 U可以使数据源
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()
}
}
}
}
代码Objective-C中的didSet
方法的使用
写装定到您的阵列。如果阵列的名字是海图,
-(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:打开XIB /故事板含有的tableView。
步骤2:选择在XIB的tableViewHeight约束/故事板
步骤3:现在控制从高度约束拖动到该公司拥有的tableView
使用的设定器的逻辑的viewController该数组决定是否显示tableView是我想传达的逻辑。你可以使用这个逻辑来隐藏tableView /设置帧为0 /设置高度约束为0或任何你想使用:)
我同意这种方法更多,OP应该修改高度约束,而不是将其整个框架设置为0. – NSGangster
@nsgangster:谢谢你:) –
你能为我写OBJ-C吗?我不是在快速写作 – GoreDefex
你可以检查你的数组计数&把你的表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中编写了代码。你可以放在你想要的代码中。
这只适用于没有身高限制 – GoreDefex
你有任何控制在tableview下面吗?如果没有,那么只需为tableview设置alpha 0和userinteraction NO。 –
我这样做:(在表格下面我有一个链接到一个显示该数据对象的“所有列表”的视图。我试图隐藏的那个只显示最近的4个或5个。 – GoreDefex
确实像这样 - if(self.yourArray。count == 0) dispatch_async(dispatch_get_main_queue(),^ { self.myTable.frame = CGRectZero; }); } –