无需编辑即可将自定义单元格添加到UITableview

时间:2011-12-29 10:17:00

标签: uitableview ios4

我一直在努力解决这个问题所以我终于决定要问看我做错了什么。

我创建了一个自定义UITableViewCell,它在单元格内容视图中有一个UITextField作为子视图。我想要完成的是在textView开始编辑时用标准占位符在它下面插入一个新行。我认为这可能在下面的方法中,但我总是遇到崩溃。有没有办法做到这一点?

我是iOS的新手,每次都会让我看到桌面视图。

- (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        UITableView *tableView = (UITableView*)self.view;

        if ([textField tag] == 2) { // Only add row if textfield 2 is editing

            [tableView beginUpdates];
            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[tableView indexPathForSelectedRow]] withRowAnimation:UITableViewRowAnimationTop];
        [tableView endUpdates];
        }
    [textField setFont:[UIFont systemFontOfSize:18.0]];
    [textField setTextColor:[UIColor blueColor]];
    }

如果有人有一些指示或一些参考(除了苹果的文档),将不胜感激。

1 个答案:

答案 0 :(得分:0)

在插入之前,您没有更新作为tableView源的集合。

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[tableView indexPathForSelectedRow]] withRowAnimation:UITableViewRowAnimationTop];

这样做是立即查询数据源和委托。现在您可能想要插入“占位符”,但您的数组或字典是否包含正确返回数据所需的内容?如果要插入新行并且源未正确更新,则会崩溃。因此,为了纠正它,您需要在开始tableView的更新之前修改源。

我知道你不想要苹果的文档,但看看这个可能会解决你的问题。

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW9