簡體   English   中英

沒有數據顯示時,Objective-C刪除表視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM