[英]Get UItextFields text from custom UITableView
我有一个带有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
文本?
根据您要访问此文本的位置,取决于文本的难易程度。
想要访问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;
如果要在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
我从未做过,但可能会用以下两种方法之一
a)创建一个数组,并在创建自定义单元格时向数组添加每次指向textFields的指针。 然后,我们可以从该数组访问所需的textField
对于这种方法,我会将自定义单元格添加到接口中定义的可变数组中
NSMutableArray * cellsArray;
记得在viewDidLoad中初始化它
cellsArray = [NSMutableArray new];
然后在cellForRowAtIndex中,我每次都会添加单元格
menuCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
[cellsArray addObject: menuCell];
显然,这取决于我们有多少部分。 如果我们有多个部分,它会变得更加复杂:
然后,我们需要为每个部分的整个数组添加一个数组。 这是相当复杂的,可能有一个整体的问题,对自己,有一个如何做一个很好的链接在这里 :
一旦有了一个单元格数组(或一个单元格数组),就可以基于indexPath调用所需的单元格并获取textField
b)调用一个指向我们想要的特定单元格的指针
menuCell * menuCell = [self tableView:table cellForRowAtIndexPath:indexPath];
然后像以前一样从该单元格获取textField。
请记住,如果要在cellForRow之外创建一个indexPath,则可以计算自己的indexPath:
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
如果您要访问特定的单元格,则此方法非常好,但如果要大量访问该单元格,并且必须在整个VC上始终调用此代码,则此方法会比较麻烦
希望这可以帮助
如果您询问如何从委托方法textFieldDidEndEditing中获取文本,则只需执行以下操作:
-(void) textFieldDidEndEditing:(UITextField*) textfield
{
NSString *textFieldText = textfield.text;
}
但是,如果您有多个textField,并且想知道哪个textfield正在调用委托,则可以标记textField:
[myTextField setTag:indexPath.row]
然后将if语句放入委托textFieldDidEndEditing中,如下所示:
-(void) textFieldDidEndEditing:(UITextField*) textfield
{
if(textfield.tag == index0) do something..
else if(textfield.tag == index1) do something..
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.