質問

アプリケーションで次のメソッドを使用しています:

- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath

このメソッドでは、 indexPath.row を使用して、各行の行番号を取得できます。

しかし、私は実際にその行のセルにアクセスし、そのセルのみで書式設定を行います。

ご案内ください。

役に立ちましたか?

解決

たぶん誤解があるかもしれません。引用するメソッドは、tableViewにそのindexPathに表示する行を指示することになっています。したがって、tableViewがこのメソッドを要求するたびに、このindexPathに行がまだないため、そうします。

テンプレートコードは新しいセルを生成するか、キューから取り出します:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
              cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
     }

その後、 cell にアクセスして、各セルのコンテンツを構成したり、contentViewにコンテンツを追加したりできます。

行ごとにセルの書式設定を操作する場合(cell.textLabelの色など)、次のデリゲートメソッドでこれを行う必要があります:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

他のヒント

他の回答は正常に機能しますが、ユーザーがタップしたセルを変更するだけです。私の場合、他のセルも変更したかった。周りを検索した後、私は試しました:

[[tableView cellForRowAtIndexPath:5 setAccessoryType:UITableViewCellAccessoryNone];

IndexPathは整数ではないため、これは機能しません。 (ただし、indexpath.rowはそうです)。 そのため、ドキュメントを検索すると、NSIndexPathを使用して行を次のようにエンコードできることがわかりました。 NSIndexPath値。作業コードは次のとおりです。

[[tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:5 inSection:0]] setAccessoryType:UITableViewCellAccessoryNone];

この方法では、tableviewオブジェクトがあれば、任意の行/セクションで任意の場所のセルにアクセスできます。

これが誰かを助けることを願っています。

UITableView -cellForRowAtIndexPath メソッドを使用して、可視セルにアクセスできます。 UITableView リファレンスから:

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
  

戻り値
  テーブルのセル、またはセルの場合はnil   表示されないか、indexPathが範囲外です   範囲。

ただし(IMO) cellForRowAtIndexPath はセルのセットアップに最適な場所です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top