1

我有一个包含 15 个单元格的 UITableView,每个单元格中都有一个单独的文本框。我已经实现了 UITextViewDelegate 并且我能够使用 textViewDidChange (等)接收更改的 textview 数据。但是我还有一个大问题,我怎么知道哪个 textview 发送了这个,(即 textview 在哪个单元格中被改变了?)

有这么多工作很有趣,但不知道它的确切来源。

如果需要,可以使用一大堆代码。

问候@norskben

代码

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    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, CONST_Cell_width, 150)];
        detailLabel.tag = 20;
        [cell.contentView addSubview:detailLabel];

    }   


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

5 回答 5

2

您可以将标签(整数)分配给不同的视图并查询标签号以查看哪个视图调用了该方法。在视图上查找 tag 属性:

tag

The receiver’s tag, an integer that you can use to identify view objects in your application.

@property(nonatomic) NSInteger tag

看这里

于 2010-02-22T20:06:29.223 回答
2

不是在我的开发机器上,但是当您创建 UITextView 时,您应该能够为其分配一个标签。我认为是 [myTextView setTag:x]; 其中 x 是一个整数。

然后,在 TextViewDidChange 中使用 if (textview.tag == x) { //do something } else if (textview.tag == y) { //do something else and so on }

希望能有所帮助。

于 2010-02-22T20:07:23.620 回答
1

文本视图在每个委托方法中传递对自身的引用,以便您知道是哪个委托方法发送的。为了与单元格建立连接,我将每个文本视图的tag属性设置为一个不同的值,该值对应于它们所在的单元格的行。

于 2010-02-22T20:09:16.113 回答
0

这是一个重要的问题:您的文本框是静态的,还是会随着时间而改变?如果它们不会更改(用户不能更改单元格的数量或以后添加更多),那么您可以为每个单元格声明一个新的 textField。我的应用程序中有类似的东西。我有两个文本框,根据当前处于活动状态的 textField,委托会做一些不同的事情。

在标题中声明单独的文本字段

UITextField *textField1;
UITextField *textField2;
UITextField *textField3;

在委托方法中,使用 if 语句块来找出哪个 textField 正在更改:

if (textField == textField1) {
    //do something
} else if (textField == myTextField2) {
    //something else
}

请注意,这仅在您的视图是静态的时才有效。

希望这可以帮助

祝你有美好的一天

于 2010-02-22T20:08:02.747 回答
0

当您在 UITableView 的单元格中搜索事件源 UITextView 时,仅遍历用户当前可以看到的单元格。这可以使用以下 UITableView 方法获得:

- (NSArray *)visibleCells
于 2010-02-22T21:19:43.210 回答