1

だから私は私のカスタムセルがで作成されたときにセルのインデックスパスを保存しようとしています

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

「カスタムセル」と呼ばれるクラスでカスタムセルを定義し、そのクラスに次のように定義されたプロパティを追加しました。

@property (nonatomic, strong) NSIndexPath *indexPath;

cellForRowAtIndexPathインデックスパスを設定しますcustomCell.indexPath = indexPath.

NSLogの行にあると、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]);   
}     
}
4

1 に答える 1

3

indexPathを使用して、特定のセルのを決定できます

-[UITableView indexPathForCell:]

セルがそれ自身を知る必要がある場合indexPath

NSIndexPath * myIndexPath = [(UITableView *)self.superview indexPathForCell:self]

しかし、もしそうなら、何かが正しくありません!

編集した投稿を見ると、問題があります。必要なもの:

UITableViewCell* myCell = (UITableViewCell*)textField.superview.superview

textField実際にはセルのサブビューですcontentView。これは常に私には少し間違っているように思われるので、これを処理する別の方法は、カスタムセルをにしてから、セルUITextFieldDelegateのデリゲートプロトコルを作成することです。したがって、セル内には次のようになります。

(BOOL)textFieldShouldReturn:(UITextField *)textField {

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

    return NO;
}

次に、セルのデリゲートに、セルとtextFieldへの参照があります。

于 2012-06-20T22:08:36.003 に答える