我有一个包含 15 个单元格的 UITableView,每个单元格中都有一个单独的文本框。我已经实现了 UITextViewDelegate,并且能够使用 textViewDidChange (等)接收更改后的文本视图数据。但我仍然有一个大问题,我怎么知道哪个 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];
有帮助吗?

解决方案

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

tag

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

@property(nonatomic) NSInteger tag

看这里

其他提示

在没有我的机器,但是当你创建的UITextView你应该能够给它分配一个标签。我认为这是[myTextView setTag:X];其中,x是整数。

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

希望有所帮助一点。

在文本视图传递一个参考自己在每委托方法,所以你知道哪一个发送它。要对小区的连接,我想每个文本视图的tag属性设置为不同的值对应于他们所在的单元格的行。

下面是一个重要的问题:你的文本框静态的,也可以随时间变化?如果他们不改变(用户不能改变细胞的数量或增加更多更高版本),那么你可以声明每个小区的新文本框。我有我的应用程序类似的东西。我有两个文本框和取决于哪个文本框是当前激活的,委托做不同的东西。

声明单独的文本字段中的报头

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

在委托方法,使用if语句的块以找出哪些文本框是变化:

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

请注意,如果你的观点是静态的,这确实只是工作。

希望这有助于

有一个伟大的天

当你搜索的UITableView的细胞事件源的UITextView,仅遍历细胞,用户可以看到当前。这可以通过使用下面的UITableView方法获得:

- (NSArray *)visibleCells
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top