2017-07-21 3 views
-2

我々からの細胞を得ることができます:私は、セルのタグやindexPathを知っていれば、それはそこにcellForRowAtIndexPath:を呼び出すことなく、指定されたセルを取得する方法です目的C iOSでcellForRowAtIndexPathを呼び出さずにセルを取得する方法は?

UITableViewCell * cell = [self tableView:tableVie cellForRowAtIndexPath:indexPath] 

それはcellForRowAtIndexPath:

メソッドを呼び出すのだろうか?


私は、各セルの高さをリセットする方法のcellForHeightAtIndexPathのセルを取得したいcellForRowAtIndexPath:indexPath

を呼び出すことはできませんなぜ、いくつかの理由を追加します。 :

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

     UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; 
     CommentsListResponseDataModel * model = self.liveCommentData[indexPath.row -1]; 

     if (model.viewHeight > 0) { 
      return model.viewHeight; 
     } else { 
      if (model.parentComment) { 
       CommentParentCell * cc = (CommentParentCell *)cell; 
       return cc.viewHeight; 
      } else { 
       CommentSingleCell * cc = (CommentSingleCell *)cell; 
       return cc.viewHeight; 
      } 
     } 
    } 

} 

しかし、これは死んでループになるだろうそれをすべてcellForRowAtIndexPath:indexPathcellForRowAtIndexPath:indexPathcellForHeightAtIndexPath:indexPath

+2

を呼び出そう、あなたのViewControllerにグローバルUITableView *_tableView;または

  • @IBOutlet weak UITableView *_tableView;ようなものとしてあなたのUITableViewを宣言? – Desdenova

  • +0

    @Desdenovaモデルをcellに渡し、モデルのsetterメソッドを(cellForRowAtIndexPath内に)設定するようにオーバーライドします。cellForRowAtIndexPathが何度も呼び出されると、セルを複数回設定します。 – Neko

    +0

    [セルフォロー外のテーブルビューコンテンツへのアクセス]の可能な複製(https://stackoverflow.com/questions/26709483/accessing-tableview-content-outside-cellforrow) – Himanth

    答えて

    0

    私の理解では、UITableViewデータソースメソッドを呼び出して、セルオブジェクトを取得しようとしています。しかし、あなたがそのようにしようとすると、それは無限ループ呼び出しになり、あなたは決して細胞オブジェクトを取得しません。したがって、UITableViewからセルオブジェクトを取得するには、次の手順を実行します。

    • その後cellForRowAtIndexPathでいただきまし間違っ

    //specify the item indexpath 
    NSIndexPath *_indexPath = [NSIndexPath indexPathForItem:3 inSection:1]; 
    
    //now try to access cell object by passing cell indexPath 
    UITableViewCell *_cell = [_tableView cellForRowAtIndexPath:_indexPath]; 
    
    0

    をリコールしますので、あなたがあなたの元の質問とは関係のない何かをしたいようだ - あなたは自動的にサイズにあなたのテーブルビューのセルをしたい、依存コンテンツに

    あなたがする必要があることは次のとおりです。
    1.セルに制約を追加します。セルに高さ制約はないが、内容には上限制約と下限制約が必要です。それは必要ではないだろうと
    2.削除heightForRowAtIndexPath
    3.自動

    tableView.rowHeight = UITableViewAutomaticDimension 
    

    今だけの設定にあなたの携帯をお使いのテーブルビューの行の高さを設定する - 所望の高さと、表のセルにその内容のサイズを変更し、自動的にリサイズされます

    関連する問題