0

我有一个 UITableViewCell 并在标签中添加了一个子视图。

[cell addSubview:stateLabel];

我想在用户按下单元格时更改标签。

[tableView indexPathForSelectedRow];

这给了我按下的 indexPath,但是任何人都可以帮助我如何更改用户按下的那个位置的标签吗?

我想我只需要一个提示,然后我可以自己做剩下的......

例如,如果用户按下单元格 8,它会更改单元格 8 的 stateLabel 子视图。

这是我到目前为止所得到的:

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

    static NSString *CellIdentifier = @"CellID";

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

        stateLabel = [ [UILabel alloc ] initWithFrame:CGRectMake(240,0,100,44)];
        stateLabel.textColor = [UIColor redColor];
        stateLabel.backgroundColor = [UIColor clearColor];
        stateLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:(13.0)];
        stateLabel.text = @"Not applied";
        [cell addSubview:stateLabel];
    }

    cell.textLabel.text = [cheatNames objectAtIndex:indexPath.row];


    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSIndexPath *selectedRowPath = [tableView indexPathForSelectedRow];


}

谢谢!

4

3 回答 3

1

你可以实现这样的东西

cellForRowatIndexPath:返回单元格之前的方法中;

获取indexpath用于更改标签的选定行的 。并使用

if(indexpath == selected index)
{
    // do ur code here

}

一旦didSelectRow:被调用重新加载表

这肯定会奏效。

于 2012-11-09T07:08:29.440 回答
0

恕我直言,无需重新加载:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSIndexPath *selectedRowPath = [tableView indexPathForSelectedRow];
    myString = @"Any Data";
    [tableView reloadData];

    UITableCellView *cell = [tableView cellAtIndexPath:indexPath];
    cell.label.title = myString;
}
于 2012-11-08T22:32:49.840 回答
-1

myString在 .h 文件中定义为NSString

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSIndexPath *selectedRowPath = [tableView indexPathForSelectedRow];
myString = @"Any Data";
[tableView reloadData];

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

static NSString *CellIdentifier = @"CellID";

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

    stateLabel = [ [UILabel alloc ] initWithFrame:CGRectMake(240,0,100,44)];
    stateLabel.textColor = [UIColor redColor];
    stateLabel.backgroundColor = [UIColor clearColor];
    stateLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:(13.0)];
    stateLabel.text = myString;
    [cell addSubview:stateLabel];
}

cell.textLabel.text = [cheatNames objectAtIndex:indexPath.row];


return cell;

}
于 2012-11-08T21:08:02.867 回答