簡體   English   中英

從Storyboard加載自定義UITableViewCell

[英]Load custom UITableViewCell from Storyboard

目前我正在使用故事板的自動布局來動態調整自定義UITableViewCell的大小。 除了滾動時存在內存泄漏外,一切都正常工作。

我知道問題來自於打電話

[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

從內部

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

我的問題是,創建參考單元的最佳方法是什么? 如何在沒有dequeueReusableCellWithIdentifier情況下從故事板加載單元格?

可以從viewDidLoad調用dequeueReusableCellWithIdentifier並創建一個引用單元作為屬性嗎?

我需要參考單元用於尺寸調整。

謝謝你的幫助。

關於如何創建參考單元(參見原始問題),我可以看到幾個選項:

  1. 用XIB創建一個自定義單元格,這里有一篇很棒的文章 - > 一個鏈接

    • 這是@smileyborg向我指出的,謝謝!
  2. 在代碼中創建自定義單元格以及約束。

  3. 在storyboard中創建自定義單元格作為原型單元格

    • 之后有2個選項:
      • 將自定義單元格從表格視圖拖放到故事板場景,作為頂級nib對象(不是視圖層次結構的一部分),並簡單地創建它的出口。
      • 復制自定義單元格並將其粘貼到故事板場景。 當以這種方式使用它時,不需要將原始單元格與表格一起注冊以用於出列。
      • 兩種方法的一個小問題是,一旦將自定義單元格拖放到情節提要場景中,您將無法直觀地看到它並安排UI。
    • 很棒的文章 - > 一個鏈接

謝謝大家的幫助!

可以從viewDidLoad調用dequeueReusableCellWithIdentifier並創建一個引用單元作為屬性嗎?

是的,你可以這樣做。 或懶惰初始化屬性:

- (UITableViewCell *)referenceCell
{
    if (!_referenceCell) {
        _referenceCell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];
    }
    return _referenceCell;
}

您可以將單元格出列一次並存儲高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSNumber *height;

    if (!height) 
    {
        UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"YourCustomCell"];
        height = @(cell.bounds.size.height);
    }

    return [height floatValue];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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