gpt4 book ai didi

ios - 从自定义 UITableView 获取 UItextFields 文本

转载 作者:行者123 更新时间:2023-11-29 02:13:31 24 4
gpt4 key购买 nike

我有一个带有 UITextField 的自定义 UITableViewCell (链接到自定义单元格类)。我正在尝试从我的 VC 类访问 textField

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
menuCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];

if ([indexpath row] == 2) {
menuCell.nameTextField.delegate = self;
}

return cell;
}

-(void) textFieldDidEndEditing:(UITextField*) textfield
{

}

如何从 textFieldDidEndEditing 获取 textFields 文本?

最佳答案

取决于您想要在哪里访问此文本,取决于它的难度。

  1. 想要访问 cellForRowAtIndex 中的文本 - (非常简单)

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    menuCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];

    if ([indexpath row] == 2) {
    menuCell.nameTextField.delegate = self;
    }

    NSString * text = menuCell.nameTextField.text;

    return cell;
  2. 如果您想访问 VC 中任何位置的文本,并且 menuCell 是唯一的(只有其中一个)-(中等难度)

在头文件中添加自定义单元格作为类

@class menuCell;

这意味着您可以在界面中将其设置为变量

menuCell * _menuCell;

接下来,您要在 cellForRowAtIndex 中分配此自定义单元格

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

if (indexPath.section == bCustomCellSection) {

if (!_menuCell) {

_menuCell = [tableView_ dequeueReusableCellWithIdentifier:bProfileNameCell];
_menuCell.nameTextField.delegate = self;
}

_menuCell.nameTextField.placeholder = @"Name";
_menuCell.selectionStyle = UITableViewCellSelectionStyleNone;

return _menuCell;
}

...

}

这意味着我们现在可以从 VC 中的任何位置访问菜单单元格,并且可以通过调用获取文本

_menuCell.nameTextField.text
  1. 具有多个文本字段的多个自定义单元格 -(困难)

我从未这样做过,但可能会采用以下两种方式之一

a) 创建一个数组,当我们创建自定义单元格时,每次都会向数组添加一个指向文本字段的指针。然后我们可以从该数组中访问我们想要的文本字段

对于此方法,我会将自定义单元添加到界面中定义的可变数组中

NSMutableArray * cellsArray;

记得在viewDidLoad中初始化它

cellsArray = [NSMutableArray new];

然后在 cellForRowAtIndex 中每次添加单元格

menuCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
[cellsArray addObject: menuCell];

这显然取决于我们有多少个部分。如果我们有多个部分,它会再次变得更加复杂:

然后我们需要将每个部分的数组添加到整个数组中。这是相当复杂的,可以单独提出一个完整的问题,有一个关于如何做到这一点的很好的链接 here :

一旦你有了一个单元格数组(或一个单元格数组数组),你就可以根据indexPath调用你想要的单元格并获取textField

b) 调用指向我们想要的特定单元格的指针

menuCell * menuCell = [self tableView:table cellForRowAtIndexPath:indexPath];

然后像我们之前那样从该单元格中获取文本字段。

请记住,如果您想在 cellForRow 之外创建一个索引路径,您可以计算自己的索引路径:

NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];

如果您想访问特定单元格,此方法非常好,但如果您想经常访问它并且必须在整个 VC 中调用此代码,则有点麻烦

希望对你有帮助

关于ios - 从自定义 UITableView 获取 UItextFields 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29022256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com