1

我有固定於底部的描述標籤一個UITableViewCell如下所示的行數不更新0的UITableView與rowHeight的UITableViewAutomaticDImension當我改變

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    [self setupView]; 
} 

-(void) setupView 
{ 

    UITapGestureRecognizer * gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNumberOfLines)]; 
    self.jobDescriptionLabel.userInteractionEnabled = YES; 
    [self.jobDescriptionLabel addGestureRecognizer:gestureRecognizer]; 
} 

- (void) toggleNumberOfLines { 
    if(self.jobDescriptionLabel.numberOfLines != 0){ 
     self.jobDescriptionLabel.numberOfLines = 0; 
    }else{ 
     self.jobDescriptionLabel.numberOfLines = kNumberOfLines; 
    } 
    [self.jobDescriptionLabel sizeToFit]; 
    [self layoutIfNeeded]; 
} 

當我在標籤上點擊,行數不改變,但細胞不展開,以適應線路的新號碼。我該如何解決?

摺疊(默認):

enter image description here

擴展:

enter image description here

+0

仍無法瞭解你的實際問題。問題是與標籤或擴大tableView? –

+0

'UITableViewAutomaticDimension'根據其內容自動計算單元格的高度。在我的情況下,我正在更新標籤的高度,但tableview不會更新單元格的高度。如何獲取桌面視圖以更新單元格的高度 –

+0

您需要強制重新加載表格。首先'HeightOfRow'方法將會調用'cellForRow'。所以當調用'HeightOfRow'方法時,確保你有一個新的標籤高度。並請添加您的代碼工作完成這一點。 –

回答

2

如果您在限制設置正確,你需要重新加載數據---不整表,甚至沒有受影響的行。

最好的方法是後面加個委託功能到你的tableview控制器,並調用這些行背到後面:

tableView.beginUpdates() 
tablebleView.endUpdates() 

,將告訴自動佈局重新計算的行高度。

編輯:檢查我的回答 - 其中包括一個鏈接到一個演示項目 - 在這裏:Expand UILabel inside UITableView with "more" button like Instagram

+0

非常好!簡直太棒了!非常感謝 –

0

當細胞勾畫出它的子視圖,表視圖實際上並沒有知道事情的任何方式已經改變。您必須手動告訴表視圖重新計算。

你可能要重新加載表視圖,或至少細胞的變化在發生。

reloadData看看重新加載整個表視圖,或者reloadRowsAtIndexPaths:如果你只想重裝具體指標在Apple reference docs

+0

這種方法的問題是,當我調用reloadRowsAtIndexPaths時,它會重新創建單元格。這意味着我需要在我的'UIViewController'中存儲'jobDescriptionExpanded'狀態並在單元格創建時傳遞它。雖然這可行,但並不完全優雅 –

+0

爲什麼不使用「UITableViewCell」的選定狀態來決定「jobDescriptionExpanded」的值? 不幸的是,讓'UITableView'更新單元格高度的唯一方法是重新加載單元格。所以不管你覺得你的解決方案多麼'不雅',你必須這樣做。 –

0

您可以更新heightForRowAtindexPath中的tableview單元格高度。 調用reloadRowsAtIndexPath更新UITableView的單行的方法。

self.dataTableView.beginUpdates() 
self.dataTableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: UITableViewRowAnimation.automatic) 
self.dataTableView.endUpdates() 
相關問題