0

在 aUITableView中,我希望能够在cell.textLabel.text触摸该行时编辑该行的属性。

换句话说,我希望能够直接编辑该行,而不是进入编辑模式。

我该如何实施?

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

    static NSString *CellIdentifier = @"Cell";

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

    int tagsCount = [[currentComic Tags] count];

    [[cell textField] setTag:[indexPath row]];
    [[cell textField] setText:[tagsDisplayName objectAtIndex:[indexPath row]]];

    return cell;
}

这是 CMTableViewCell 的子类:

...

-(void)viewDidLoad
{    
    textField = [[UITextField alloc] init];
    [textField setFrame:CGRectMake(5,5,50,400)];
    [self addSubview:textField];
}
4

2 回答 2

1

添加UITextField无边框作为子视图。在将其添加到子视图之前 - 将 Tag nubmer 设置为UITextFieldfrom indexPath.rowattableview cellForRowAtIndexPath方法。当用户输入数据时 -UITextFieldDelegate按下“返回”按钮时使用方法保存它。不幸的是,我不能给你代码,因为现在我在 Windows 上。回家,这将有所帮助

更新:更改数据源中的数据所需的标记号。当您按下 UITextField 中的“返回”按钮时,您可以通过从 UITextField 获取此标记号获取 UITableViewCell 来保存更改。

于 2012-08-24T12:10:32.060 回答
0

这很简单:

- (void)tableView:(UITableView *)tableView
                             didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.text = @"...";
}

更新

- (void)tableView:(UITableView *)tableView
                             didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITextField *textField = [[UITextField alloc] init];
    [textField setTag:[indexPath row]];
    [tagsTableView addSubview:textField];
    FreeAndNil(textField);
}
于 2012-08-24T11:52:40.127 回答