2

私が持っているのは

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

    static NSString *CellIdentifier = @"Cell";

    cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell = customCell;
        self.customCell = nil;
    }

    // Configure the cell.
    switch (indexPath.row) {
        case 0:
            cell.title.text = @"iPhone!";
            cell.date.text = @"December 25, 2009";
            cell.imageView.image = [UIImage imageNamed:@"iphone.png"];
            break;
        case 1:
            cell.title.text = @"Second Cell";
            cell.date.text = @"December 26, 2009";
            //Put in your own image. Make sure it is 120 by 100
            cell.imageView.image = [UIImage imageNamed:@""];
            break;
        default:
            break;
    }
    return cell;
}




// Override to support row selection in the table view.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"index %d",indexPath.row);
    NSIndexPath *index = [NSIndexPath indexPathForRow:indexPath.row inSection: 0];
    NSArray *array = [NSArray arrayWithObject: index];
    cell.title.text = @"tetete";
    [self.myTable reloadRowsAtIndexPaths: array withRowAnimation: UITableViewRowAnimationFade];
}

私の目的は、行をクリックすると、この行のラベルのテキストを変更することです。

ただし、reloadRowsAtIndexPathはcellForRowAtIndexを呼び出し、今回は古いテキストをuilabelに割り当てます。

私の質問:行をクリックした後にuilabelの値を変更できるようにするにはどうすればよいですか?

4

3 に答える 3

4

メソッドのラベルに値を設定できます

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

そして、回線でセルにアクセスできます。

NSIndexPath * path = [NSIndexPath indexPathForRow:0 inSection:1];
        UITableViewCell * cell = [tableView cellForRowAtIndexPath:path];
于 2012-06-07T03:52:28.933 に答える
1

didSelectRowのラベルをどのように処理しても、cellForRowが呼び出され、ラベルがハードコーディングされたものに置き換えられるため、スクロールすると常に変更されます。

テキストと日付ラベルの文字列を辞書の配列に入れてみませんか?例えば

NSMutableArray *array = [[NSMutableArray alloc] init];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"iPhone!" forKey:@"title"];
[dict setValue:@"December 25th, 2009" forKey:@"date"];
[array addObject:dict];
[dict release];
dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"Second Cell!" forKey:@"title"];
[dict setValue:@"December 26th, 2009" forKey:@"date"];
[array addObject:dict];
[dict release];

その後、あなたの-cellForRow交換で

cell.title.text = @"iPhone!";

cell.title.text = [[array objectAtIndex:indexPath.row] objectForKey:@"title"];

日付も同じです

とで-didSelectRow

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"test!" forKey:@"title"];
[dict setValue:@"December 27th, 2009" forKey:@"date"];
[array replaceObjectAtIndex:indexPath.row withObject:dict];
[dict release];
于 2012-06-07T04:04:37.197 に答える
0

あなたのセルはのサブクラスであるという印象を受けていますUITableViewCell。そうは言っても、以下のコードを試してください...この例YourCustomCellでは、サブクラス化されたの名前に置き換えますUITableViewCell

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"index %d",indexPath.row);
NSIndexPath *index = [NSIndexPath indexPathForRow:indexPath.row inSection: 0];
NSArray *array = [NSArray arrayWithObject: index];

// This is where you make the pointer to your cell.
YourCustomCell *cell = (YourCustomCell*)[tableView cellForRowAtIndexPath:index];

cell.title.text = @"tetete";
[self.myTable reloadRowsAtIndexPaths: array withRowAnimation: UITableViewRowAnimationFade];
}
于 2012-06-07T04:05:11.143 に答える