我一直在努力解决这个问题所以我终于决定要问看我做错了什么。
我创建了一个自定义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]];
}
如果有人有一些指示或一些参考(除了苹果的文档),将不胜感激。
答案 0 :(得分:0)
在插入之前,您没有更新作为tableView
源的集合。
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[tableView indexPathForSelectedRow]] withRowAnimation:UITableViewRowAnimationTop];
这样做是立即查询数据源和委托。现在您可能想要插入“占位符”,但您的数组或字典是否包含正确返回数据所需的内容?如果要插入新行并且源未正确更新,则会崩溃。因此,为了纠正它,您需要在开始tableView
的更新之前修改源。
我知道你不想要苹果的文档,但看看这个可能会解决你的问题。