【问题标题】:iphone sdk - TableView Cell with custom TextView - Get New Dataiphone sdk - 带有自定义 TextView 的 TableView 单元格 - 获取新数据
【发布时间】:2010-02-22 11:02:04
【问题描述】:

我有一个带有自定义文本视图的表格视图单元格,我现在想知道在编辑/添加文本后如何访问文本框中的文本。

当我通过 IB 绘制文本字段时,我通常会知道这是如何完成的,但我的 textviewcell 是动态绘制的。

(即我想捕获在 detailLabel.text 中更新的数据)

这是适应您的答案的相关代码。 再次感谢!

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


    //Big Text Box
    UITextView *detailLabel = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, 500, 150)];
    detailLabel.tag = 20;
    [cell.contentView addSubview:detailLabel];
    detailLabel.layer.borderWidth = 1;
    detailLabel.layer.borderColor = [[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.9] CGColor];
    detailLabel.layer.cornerRadius = 10;
    detailLabel.font = [UIFont fontWithName:@"Helvetica" size:17];
    [detailLabel release];

} 

UITextView * detailLabel = (UITextView *) [cell.contentView viewWithTag:20];

switch (indexPath.row) {

case 0:
    detailLabel.text = @"no";
    break;
default:
    detailLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    detailLabel.hidden = NO;    

}

【问题讨论】:

    标签: iphone sdk uitableview editing textfield


    【解决方案1】:

    你会想要监听 UITextView 发送的消息。因此,请实现UITextViewDelegate 协议并使用其delegate 属性将实现类注册到detailLabel。

    当您的代理收到 UITextView 更改的通知时,您必须确定当前拥有 UITextView 的单元格。这样做时,您必须记住单元格可以重复使用。

    我将从查看 UITableView 类中的以下方法开始:

    - (NSArray *)visibleCells
    

    我们知道,如果用户对 UITextView 的内容进行了更改,它当前必须在屏幕上,因此出现在前面提到的数组中。为了找到它,我们使用指向发生变化的 UITextView 的指针(它是 textViewDidChange 协议方法中的参数)。因此,只需遍历 visibleCells 数组并检索 UITextView 并将其与更改的 UITextView 进行比较。

    - (void)textViewDidChange:(UITextView *)textView {
    ....
    cellsLabel = (UITextView *) [cell.contentView viewWithTag:20];
    if (cellsLabel == textView)
    ...
    

    您现在将拥有 UITableView 中单元格的句柄。要查找索引,请使用以下 UITableView 方法:

    - (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell
    

    【讨论】:

    • 啊,我明白了 ;) 首先是 .h 中的 技巧,然后可用的新方法是 -(void)textViewDidChangeSelection:(UITextView *)textView
    • 好的,现在我可以访问文本字段中的文本,但我如何知道哪个文本框正在发送此信息。假设我有 15 个单元格,每个单元格都有一个包含不同数据的文本框。 Rgds。
    • 编辑原始答案以澄清。
    • 谢谢马特,我已经解决了这个问题和其他一些相关问题!今晚我会睡得很好。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多