私のアプリケーションでは、編集の変更をtextFieldDidEndEditing:
にコミットしたときにUITextFieldがどのセルから来るのかを追跡する必要があります。これを行うには、セルのテキストフィールドのタグプロパティをtableview:cellForRowAtIndexPath:
に設定しました。行が移動された後にUITableViewCellタグのプロパティを更新します。
セルが移動すると、これは少し問題を引き起こします。たとえば、下のセルを一番上に移動し、一番下にあるセルを削除してから、一番上に配置したセルを編集しようとすると、タグのプロパティがまだ8になっているため、 (または別の番号)が、私のデータソースにこの多くの要素がありません。 (BookmarkTextEntryTableViewCell *)[[self tableView] cellForRowAtIndexPath:toIndexPath]
がが行を移動する前があったセルを返すため
は私がtableView:moveRowAtIndexPath:toIndexPath:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
NSString *siteToMove = [[sites objectAtIndex:[fromIndexPath row]] retain];
[sites removeObjectAtIndex:[fromIndexPath row]];
[sites insertObject:siteToMove atIndex:[toIndexPath row]];
if ([toIndexPath section] == 1) {
[[(BookmarkTextEntryTableViewCell *)[[self tableView] cellForRowAtIndexPath:toIndexPath] textField] setTag:[toIndexPath row]];
}
}
にタグを更新することでこの問題を解決しようとしたが、これは動作しません。考え直しオン:あなたがテーブルにサブビューとして追加し、その後
for (UIView* subview in [[self tableView] subviews]) {
if ([subview isKindOfClass:[UITextField class]]) {
if(subview.tag==oldTag){
subview.tag = newTag;
break;
}
}
}
EDIT AS-新しいタグをチェックして、設定した可能性のあるすべてのUITextField
Sを反復処理することができます- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
方法では、