获取 customtableview 文本字段的 indexPath
Posted
技术标签:
【中文标题】获取 customtableview 文本字段的 indexPath【英文标题】:Get indexPath for the customtableview textfield 【发布时间】:2017-08-21 02:49:26 【问题描述】:我在MyCustomCell
中有一个文本字段,并在cellForRowIndexPath
tableview 委托中设置了文本字段委托。当用户更改文本字段值并调用textFieldShouldEndEditing
。一切正常。
但是,我想知道如何知道更改了哪个文本字段(indexPath)?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"Cell";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
// use this if you created your cell with IB
cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil] objectAtIndex:0];
// otherwise use this
cell = [[[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// now set the view controller as the text field delegate
cell.textField.delegate = self;
// configure cell...
return cell;
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
[textField resignFirstResponder];
return YES;
【问题讨论】:
【参考方案1】:在cellForRowAtIndexPath
方法中设置UITextField
标签。如果您的表格视图中只有一个部分,您可以将该行设置为标签。像这样。
cell.textField.delegate = self;
cell.textField.tag = indexPath.row;
在您的textFieldShouldEndEditing
方法中,您可以检查标签。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
int row = textField.tag;
[textField resignFirstResponder];
return YES;
【讨论】:
【参考方案2】:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
if ([[[textField superview] superview] isKindOfClass:[MyCustomCell class]])
MyCustomCell *cell = (MyCustomCell *)[[textField superview] superview];
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
// this is what you want.
return YES;
【讨论】:
【参考方案3】:你可以试试这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellIdentifier = @"Cell";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
// use this if you created your cell with IB
cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil] objectAtIndex:0];
// otherwise use this
cell = [[[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// now set the view controller as the text field delegate
cell.textField.delegate = self;
textField.tag = indexPath.Row;
// configure cell...
return cell;
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
NSLog("Selected Cell is:%@",textField.tag);
[textField resignFirstResponder];
return YES;
【讨论】:
以上是关于获取 customtableview 文本字段的 indexPath的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CustomTableView 中显示 ipad 库视频
将 customTableView 添加到未正确加载 json 数据的视图上