我正在覆盖tableView:commitEditingStyle:forRowAtIndexPath成为一个重置我的uitableviewcells中的文本标签的方法但是当用户接下来触摸uitableview时这会导致错误..它必须在它做任何事之前触摸一次(所以实际得到任何回复需要两次触摸。)
我希望有人可以帮助那些也处于类似情况的人;我的代码在下面..我已经将它下载到tableView:commitEditingStyle:forRowAtIndexPath方法,好像我注释掉tableview:titleForDeleteConfirmationButtonForRowAtIndexPath:方法同样的事情仍然发生..所以我认为我通过覆盖其他方法做错了。
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"Clear";
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
//[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
//reset uitableviewcell textlabel with default input "empty"
vehicleSearchObjectString = @"empty";
[self.tableView reloadData]; //reloads the tabels so you can see the value.
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
更新 这是我设置我的uitableviewcell textlabel
的地方- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"VehicleSearchCell" owner:self options:nil];
cell = vehicleSearchCell;
self.vehicleSearchCell = nil;
}
// Configure the cell...
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if(indexPath.section == 0)
{
if(indexPath.row == 0)
{
UILabel *label1;
label1 = (UILabel *)[cell viewWithTag:1];
label1.text = @"Manufacture";
UILabel *label2;
label2 = (UILabel *)[cell viewWithTag:2];
label2.text = vehicleSearchObjectString;
}
//...
答案 0 :(得分:0)
如果您使用此方法,则表示已启用对表的编辑,我建议检查禁用的位置/时间,因为这可能导致点击看起来像被忽略。
我要遵循的另一个方法是避免使用reloadData方法,该方法会触发很多事情,有时候开发人员无法控制。您已获得indexPath,因此您可以使用以下命令定位单个单元格以进行更新:
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
表视图上的。
我要调查的最后一件事是Apple对更新表的评论: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW1 它说commit ...方法必须调用方法:
deleteRowsAtIndexPaths:withRowAnimation:
或类似的插入,但它不会发生,如果没有。
答案 1 :(得分:0)
所以我已经解决了这个问题!...我基本上删除了视图.hmxib再次启动,几乎将我的代码复制到文件中并且它完美地运行...我不知道为什么这可能发生在我身上当我第一次设置它的时候做了..我不确定......