新しい iOS7 でアプリをコンパイルすると、UITableView の編集モードに入ったときに問題が見つかりました。
赤いマイナス ボタンを押してテーブルの行を削除すると、この行が左にインデントされて [削除] ボタンが表示されます。ただし、このボタンが表示されると、セルのテキストが editAccesory と重なります (これは、テキストがセルの長さよりも長い場合にのみ発生します)。
オーバーラップを削除するにはどうすればよいですか?
編集:コメント内の画像
編集2:これはテーブル作成のコードです
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_tweetList count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SessionDetailCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
Tweet *tweet = [_tweetList objectAtIndex:indexPath.row];
cell.textLabel.text = tweet.text;
return cell;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView beginUpdates];
Tweet *deletedTweet = [_tweetList objectAtIndex:indexPath.row];
[_selectedSession removeTweetsObject:deletedTweet];
[deletedTweet deleteEntity];
_tweetList = [Tweet findAllSortedBy:@"index" ascending:YES withPredicate:[NSPredicate predicateWithFormat:@"session == %@",_selectedSession]];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
}
[[NSManagedObjectContext defaultContext]saveToPersistentStoreWithCompletion:nil];
}
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
selectedPath = indexPath;
[self performSegueWithIdentifier:@"EditTweet" sender:self];
}
解決:
最後に、accessoryButton をデフォルトの状態にし、編集状態を使用して行を削除します。それが私が見つけた唯一の解決策です:(
おそらく、メソッド「willTransitionToState」は、人々が同様の問題を解決するのに役立つ可能性があります。