2014-06-24 27 views
0

我有要求顯示一條消息爲「沒有通知」,當數組是空的,但一旦數組與數據,然後刪除頁腳視圖和顯示在tableview.I數據按照下面的方法。如何最初隱藏UITableview頁腳視圖?

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection: (NSInteger)section 
{ 
if(self.notificationDataArray.count == 0){ 
    self.tableView.tableFooterView.hidden = NO; 
    return 50; 
} else { 
    return 0; 
} 
} 


- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
if(self.notificationDataArray.count == 0){ 
    UIView *view = [[UIView alloc]init]; 
    view.frame = CGRectMake(0, 0, self.view.frame.size.width, [self tableView:tableView heightForFooterInSection:section]); 
    UILabel *textLabel = [[UILabel alloc]initWithFrame:view.frame]; 
    [view addSubview:textLabel]; 
    textLabel.textAlignment = NSTextAlignmentCenter; 
    textLabel.textColor = [UIColor blueTextColor]; 
    textLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
    textLabel.text = @"No Notification"; 
    return view; 
} else { 
    return nil; 
} 

} 

但最初API調用之前,這樣的頁腳視圖出現的秒的分數,然後disappears.How最初隱藏頁腳視圖,我的意思是之前所述的tableview是loaded.Could陣列將是空的任何人都可以爲我提供解決方案, 謝謝你。

+0

隱藏它在videDidLoad? – Tander

+0

- (void)viewDidLoad { [super viewDidLoad]; self.tableView.tableFooterView.hidden = YES;} ..我試過這個,但徒勞無功,它再次出現幾秒鐘 – SMS

+1

爲什麼不直接隱藏整個tableView,直到你有數據? – Tander

回答

1
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
UIView *view = [[UIView alloc]init]; 
view.frame = CGRectMake(0, 0, self.view.frame.size.width, [self tableView:tableView heightForFooterInSection:section]); 
if(self.notificationDataArray.count == 0) 
{ 
    UILabel *textLabel = [[UILabel alloc]initWithFrame:view.frame]; 
    [view addSubview:textLabel]; 
    textLabel.textAlignment = NSTextAlignmentCenter; 
    textLabel.textColor = [UIColor blueTextColor]; 
    textLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
    textLabel.text = @"No Notification"; 
} 
else 
{ 
    view.backgroundColor=[UIColor clearColor]; 
} 
return view; 
} 

想到這個,你也可以隱藏的tableview當陣列計數爲零,你也可以先隱藏頁腳在您的viewDidLoad方法。

+0

上面的代碼最初並不隱藏頁腳視圖,而隱藏在viewDidload中的頁腳視圖也不適合我。 – SMS

1

爲什麼不使用BOOL實例變量來指示加載數據。

BOOL dataLoaded; 

Initialy在viewDidLoad其設置爲NO。加載數據後,您可以將其設置爲YES。

dataLoaded = YES 

現在的檢查情況將

if(self.notificationDataArray.count == 0 && dataLoaded){ 
    // Do your stuff 
} 
0

不要回零,而不是初始化一個空白視圖與0幀,並返回

if(self.notificationDataArray.count == 0){ 
    UIView *view = [[UIView alloc]init]; 
    view.frame = CGRectMake(0, 0, self.view.frame.size.width, [self tableView:tableView heightForFooterInSection:section]); 
    UILabel *textLabel = [[UILabel alloc]initWithFrame:view.frame]; 
    [view addSubview:textLabel]; 
    textLabel.textAlignment = NSTextAlignmentCenter; 
    textLabel.textColor = [UIColor blueTextColor]; 
    textLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
    textLabel.text = @"No Notification"; 
    return view; 
} else { 
    UIView *view = [[UIView alloc]init]; 
    view.frame = CGRectMake(0, 0, 0, 0); 
    return view ; 
} 
2

上查看沒有負載你之前做這樣的Api調用。

yourTableView.sectionFooterHeight = 0; 

[[yourTableView tableFooterView] setHidden:YES]; 


-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ 

    if ([yourArray count]==0) { 

     return nil; 
    } 
    return yourCustomView; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ 


    if ([yourArray count]==0) { 

     return 0; 
    } 
    return yourCustomViewHeight; 

} 

然後得到響應後,您可以顯示頁腳視圖,你需要

0

我只設置在titleForFooterInSection文本更改值。如果項目計數爲0,則爲空。 表格加載時將不顯示文本。

- (的NSString *)的tableView:(UITableView的*)的tableView titleForFooterInSection:(NSInteger的)部分{

NSString *mensaje = @""; 
NSInteger numberOfRowsInSection = [self tableView:self.tableView numberOfRowsInSection:section ]; 

if (numberOfRowsInSection == 0) { 
    mensaje = @"No notifications"; 
} 

return mensaje; 

}