[英]Objective-c remove table view when no data present to show
當前在我的應用程序中,當表格視圖中沒有數據可顯示時,它顯示出很高的空白,我希望該空白消失。
我需要一種以編程方式將高度更改為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。創建tableView的高度限制的IBOutlet
可以說tableViewHeightConstraint
。 最后,為了將tableView height的框架設置為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()
}
}
}
}
Objective-C中的代碼
將設置器寫入數組。 如果您的陣列名稱是theData,
-(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 / storyboard。
步驟2:在xib / storyBoard中選擇tableViewHeight約束
步驟3:現在將控件從高度限制拖動到擁有tableView的viewController中
我想傳達的邏輯是使用數組的setter決定是否顯示tableView的邏輯。 您可以使用此邏輯來隱藏tableView /將框架設置為0 /將高度約束設置為0或您想使用的任何方法:)
您可以檢查數組計數並將表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中編寫了代碼。 您可以在代碼中放置所需的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.