UITableViewCell&的UITextField

时间:2014-03-30 19:30:56

标签: ios objective-c

我试图用原型单元格制作UITableView。现在我遇到了问题。我使用了3种不同的原型单元格,其中2种是UITextField。

我是这样做的,我已经将UITableViewCell子类化了2次,用于我的UITextFields的Outlets,用于从Fields中获取信息。

我能以正确的方式做到吗?或者我需要重做我的方法吗?

这是我的代码[更新]:

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

    switch (indexPath.section) {
        case 0:{
            CellIdentifier = @"nameCell";
            naamCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) {
                cell = [[naamCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            }

            [cell setSelectionStyle: UITableViewCellSelectionStyleNone];

            return cell;
            break;
        }

        default:{
            if(indexPath.row == [[_diceArray objectAtIndex:indexPath.section]count]){
                CellIdentifier = @"addCell";

            }else{
                CellIdentifier = @"optionCell";
                optionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

                if (cell == nil) {
                    cell = [[optionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                }
                [[cell optionCell] setText:[NSString stringWithFormat:@"%@", [[_diceArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]]] ;
                [cell setSelectionStyle: UITableViewCellSelectionStyleNone];

                return cell;
            }

            break;
        }
    }
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [cell setSelectionStyle: UITableViewCellSelectionStyleNone];

    return cell;
}

编辑:

所以这是一张正在发生的事情的图片。所以我有2个部分。在我的文本字段中添加了2个东西。从第2节中删除一个。来自UITextField的内容转到第3节,不会被删除: Error

编辑2: 我已经更新了代码。因此人们可以动态编辑UITextField。我想到了,我在我的数组中使用NSStrings测试它,然后在部分索引的数组中使用Cell.textfield.text = text。

现在我需要找到一种方法,用户可以在其上添加文本,当按下或更改文本字段时,文本会保存到我的数组中,然后执行[Table ReloadData];或者这不是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

我想我终于得到了它!

需要实现这个:

- (void) textFieldDidEndEditing:(UITextField *)textField {
    UIView* v = textField;

    do {
        v = v.superview;
    } while (![v isKindOfClass: [UITableViewCell class]]);
    optionCell* cell = (optionCell*)v;

    NSIndexPath* ip = [self._tabel indexPathForCell:cell];

    if (![textField.text isEqual:[[_diceArray objectAtIndex:ip.section] objectAtIndex:ip.row]]) {
        [[_diceArray objectAtIndex:ip.section] setObject:textField.text atIndex:ip.row];
    }
}