TableView添加一个单元格

时间:2013-03-13 12:48:46

标签: iphone ios uitableview

我正在做一个项目,其中我有一个TableView,其中我有不同的Rows / Cell,每个单元格中都有一个添加按钮。我需要做的是单击添加按钮,新行应该添加到我单击按钮的行的下方,这意味着我必须将一个单元格添加到行上所选按钮的下一个。用户也可以输入新行上的文字。请告诉我怎么做。因为我是iPhone开发的新手。我会非常感激....

这是一个单击按钮功能,我想在其中执行添加新单元格的操作。

- (IBAction)AddButtonAction:(id)sender
{
    [_choices insertObject:@"avav" atIndex:[_choices count]];
    [self.tableView reloadData];
    NSLog(@"here");

}

3 个答案:

答案 0 :(得分:2)

使用此委托方法在所选行下方添加新行。并使用自定义单元格在其上有一个文本字段...

     rowCount ++;//Here rowcount refers the no. of rows in the table. 
     selectedIndexPath = indexPath;//Assign the selected indexpath for creating custom cell on it. 
    [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom];//Indexpath refers the currently selected/targeted cell. 

在cellforRowAtIndexPath中使用如下

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if((selectedIndexPath) && (indexPath.row == selectedIndexPath.row) && (indexPath.section == selectedIndexPath.section))
    {
        static NSString *cellIdentifier=@"cell";
        NewCell *cell = (NewCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        if (cell == nil)
        {
            NSString *customeCellName = [NSString stringWithFormat:@"%@",[NewCell class]];

            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:customeCellName owner:self options:nil];

            for (id currentObject in topLevelObjects)
            {
                if ([currentObject isKindOfClass:[UITableViewCell class]])
                {
                    cell =  (NewCell *) currentObject;
                    break;
                }
            }
        }
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];


        return cell;
    }
    else
    {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%d",indexPath.row];

    // Configure the cell...

    return cell;
    }
}

OutPut会是这样的 enter image description here

需要根据您的要求进行定制。

答案 1 :(得分:0)

我认为你在所有细胞中都有textfeild。在AddButtonAction函数中保存行的索引。创建单元格时,选择单元格textfeild firstresponder。用户输入数据后将其保存在数组中并再次重新加载。只需正确跟踪selectedIndex即可。 感谢这会有所帮助。

答案 2 :(得分:0)

如果按addSubview方法向单元格添加按钮,只需使用以下代码获取indexPath:

- (IBAction)AddButtonAction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    UITableViewCell *cell = (UITableViewCell *)[button superview];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

    // Adding methods comes here...
}

如果您使用的是某些addSubview级别,则应使用相同的superview方法反向访问UITableViewCell级别。如果使用自定义单元格,请在上面的代码中用UITableViewCell替换自定义单元格类名。

要添加单元格,请查看WWDC 2011 Videos,“UITableView更改,提示和技巧”视频。它显示了一些好的和有用的方法来插入,删除和重新加载其他行/部分之间的新行/部分,如insertRowsAtIndexPaths:withRowAnimation:方法。或者查看Apple Documents