1

didSelectRowAtIndexPath のカスタム UITableviewCell テキストのテキストを変更したいのですが、次のコードを使用しています:-

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.lblName.text=@"cambridge";
[tableView deselectRowAtIndexPath:indexPath animated:NO];

 }

しかし、「構造体または共用体ではないメンバー 'levelNo' の要求」を取得しています。ただし、cellForRowAtIndexPath で設定できます。 助けてください

4

3 に答える 3

3

試す

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 YourCustomCell *cell = (YourCustomCell*)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"cambridge";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];

 //update your data, your data source must be mutable
 //in case your array content are NSString, just do
  [yourMutableArrayDataSource replaceObjectAtIndex:indexPath.row withObject:@"cambridge"];

 //or if your data array holds NSDictionary. you can just initialize new dictionary 
 //as a replacement of the object in case you dont want your dictionary to be mutable
 NSDictionary *tempDict = [NSDictionary dictionaryWithObjectsAndKeys:@"cambridge",@"text",@"yourOtherData",@"otherData" nil];
  [yourMutableArrayDataSource replaceObjectAtIndex:indexPath.row withObject:tempDict];

 }

Maulikが述べたように(ありがとう)、セルがスクロールすると lblName テキストは元のテキストに戻ります。新しいデータを保持するために、データ ソースを更新する必要がある場合があります。**回答が編集されました

于 2012-06-26T12:58:04.390 に答える
0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
 YourCustomCell *cell = (YourCustomCell*)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"cambridge";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

上記のjanusfidelのコードにより、ラベルのテキストが変更されます。しかし、テーブルをスクロールすると、値が元の値に変更されると思います。

元のデータを変更する場合は、データ ソース (配列) も更新する必要があります。

于 2012-06-26T13:10:12.877 に答える
0
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath    
{
  UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"New text Here";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];
 [tableView reloadData];
}
于 2012-06-26T13:06:07.083 に答える