UITableView Section Index, перекрывающая кнопку удаления строки
После довольно многого поиска документации Google, Stackoverflow и яблок я почти отказался.
Я делаю приложение для индексирования клиентов, и из-за потенциально очень длинного списка я использую индекс раздела для более быстрого перехода. Моя проблема показана на рисунке ниже.
![http://i.stack.imgur.com/i2tTx.png]()
Когда я перетаскиваю элемент, чтобы открыть кнопку удаления, он частично скрывается под моей индексной строкой раздела.
У меня нет ширины таблицы настроек таблицы или таблицы, и индекс раздела не может быть действительно изменен, насколько мне известно.
EDIT:
Вопрос заключается в том, как я могу закрывать ячейки tableview, пока они не перекрываются, поэтому кнопка удаления полностью видна.
ИЗМЕНИТЬ 2:
Я уже пробовал устанавливать размер ячейки без каких-либо удачек.
cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width-30, cell.frame.size.height);
Я также пробовал то же самое с представлением таблицы, но, как и в UITableViewController, он не может быть изменен.
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width-30, self.tableView.frame.size.height);
Ответы
Ответ 1
В качестве простой работы мы разрешили визуальное перекрытие индекса, установив цвет фона индекса на clearColor.
self.tableView.sectionIndexBackgroundColor = [UIColor clearColor];
* Это выглядит визуально лучше, но индекс все равно будет перекрывать ваш tableViewCell.
Еще одна возможная работа - скрыть панель указателя при входе в режим редактирования:
// allow editing
[self.tableView setEditing:YES animated:YES];
// hides the index
self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax;
Ответ 2
Метод inEditMode
должен сделать трюк. Ниже я вставляю полный код, который скрывает индекс при редактировании и показывает его снова, когда редактирование выполнено.
-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{
[self inEditMode:YES];
}
-(void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath{
[self inEditMode:NO];
}
//on self.editButtonItem click
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
[self inEditMode:editing];
}
-(void)inEditMode:(BOOL)inEditMode{
if (inEditMode) { //hide index while in edit mode
self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax;
}else{
self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMin;
}
[self.tableView reloadSectionIndexTitles];
}
Ответ 3
Просто используйте этот код, прежде чем выделять какой-либо subview в cellForRowAtIndexPath
for (id object in cell.contentView.subviews)
{
[object removeFromSuperview];
}