2017-09-15 58 views
1

當前在我的應用程序中,當我的表格視圖中沒有數據要顯示時,它顯示了一個非常高的空白區域,我希望它不見了。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 
} 

和其他一些無聊的事不值得一提。任何人都可以在這裏給我一隻手嗎?我主要只是想在沒有數據的情況下將整個桌子都丟掉。

+0

你有任何控制在tableview下面嗎?如果沒有,那麼只需爲tableview設置alpha 0和userinteraction NO。 –

+0

我這樣做:(在表格下面我有一個鏈接到一個顯示該數據對象的「所有列表」的視圖。我試圖隱藏的那個只顯示最近的4個或5個。 – GoreDefex

+0

確實像這樣 - if(self.yourArray。count == 0) dispatch_async(dispatch_get_main_queue(),^ { self.myTable.frame = CGRectZero; }); } –

回答

2

正如您已經提到過,您對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

enter image description here

使用的設定器的邏輯的viewController該數組決定是否顯示tableView是我想傳達的邏輯。你可以使用這個邏輯來隱藏tableView /設置幀爲0 /設置高度約束爲0或任何你想使用:)

+1

我同意這種方法更多,OP應該修改高度約束,而不是將其整個框架設置爲0. – NSGangster

+0

@nsgangster:謝謝你:) –

+0

你能爲我寫OBJ-C嗎?我不是在快速寫作 – GoreDefex

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中編寫了代碼。你可以放在你想要的代碼中。

+1

這隻適用於沒有身高限制 – GoreDefex

相關問題