Ios 在自定义UITableViewCell中存储indexpath

Ios 在自定义UITableViewCell中存储indexpath,ios,objective-c,uitableview,cocoa-touch,Ios,Objective C,Uitableview,Cocoa Touch,因此,当在中创建自定义单元格时,我尝试存储单元格的indexpath - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 我在名为“custom cell”的类中定义了一个自定义单元格,并在该类中添加了一个属性: @property (nonatomic, strong) NSIndexPath *indexPath; 在cellforro

因此,当在中创建自定义单元格时,我尝试存储单元格的indexpath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我在名为“custom cell”的类中定义了一个自定义单元格,并在该类中添加了一个属性:

@property (nonatomic, strong) NSIndexPath *indexPath;
cellforrowatinexpath
中,我使用
customCell.indepath=indepath设置索引路径。

当I
NSLog
it位于下一行时,它返回null。有人能解释一下为什么会这样吗

编辑

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"EditableCell";

EditableCell *editableCell = (EditableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (editableCell == nil) {

    editableCell = [[EditableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

_myTextField = [editableCell textFieldCell];

if (indexPath.section == 0){
    [_myTextField setPlaceholder:@"text"];
    [_myTextField setReturnKeyType:UIReturnKeyNext];
}
else if (indexPath.section == 1){
    [_myTextField setPlaceholder:@"text"];
    [_myTextField setReturnKeyType:UIReturnKeyNext];
}
else {
    [_myTextField setPlaceholder:@"text"];
    [_myTextField setReturnKeyType:UIReturnKeyDone];
}

_myTextField.keyboardType = UIKeyboardTypeDefault;
_myTextField.delegate = self;

return editableCell;
}

我调用[self.tableview indexpathforcell:cell]的地方

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

if (textField.returnKeyType == UIReturnKeyNext) {

    UITableViewCell* myCell = (UITableViewCell*)textField.superview;
    EditableCell *currentCell = (EditableCell *)myCell;


       NSLog(@"INDEXPATH OF CURRENT CELL: %@",[self.tableView indexPathForCell:currentCell]);   
}     
}

您可以使用

-[UITableView indexPathForCell:]
如果单元格需要知道它自己的
indepath

NSIndexPath * myIndexPath = [(UITableView *)self.superview indexPathForCell:self]
但如果是这样的话,就有点不对劲了

看看你编辑的帖子,我发现了问题所在。你需要:

UITableViewCell* myCell = (UITableViewCell*)textField.superview.superview
textField
实际上是单元格的
contentView
的子视图。这在我看来总是有点错误,所以另一种处理方法是将自定义单元格设置为
uitextfieldelegate
,然后为单元格创建一个委托协议。因此,在单元内,您将有:

(BOOL)textFieldShouldReturn:(UITextField *)textField {

    if (textField.returnKeyType == UIReturnKeyNext) {
        [self.delegate customCell: self textFieldDidReturn: textField];
    }     

    return NO;
}

然后在你的单元格的委托中,你将有一个对单元格和文本字段的引用

你不理解这里的某些内容-你认为你为什么需要将单元格的indexPath保存在单元格本身中?你确定,你创建了一个对象
customCell
?@AshleyMills,有些情况下,在单元格中存储indexPath是有意义的。现在,我正在开发一个tableView,它将显示表格数据。自定义单元格获得有关其索引路径的知识,以便可以使用它调用自己的委托方法,这将有助于它配置n个标签,它将放置在自己身上。是否可以发布
-(UITableViewCell*)tableView:(UITableView*)tableView cellforrowatinexpath:(nsindepath*)indepath的整个实现?NSLog呢?@vikingosegundo-13K评级与否,我想你应该再看一次UITableView文档!我尝试使用indexPathForCell,但它返回null…我将编辑我的问题并发布代码…好的,您将不得不发布更多代码。你能添加完整的tableView:cellForRowAtIndexPath:method和你在ExpathForcell:难以置信中尝试的方法吗。非常感谢。您从另一个小时的无用调试中节省了更多。