2015-10-13 2 views
0

Я делаю небольшое приложение, используя UITableView, есть 2 раздела в моем TableView. В последней строке моего первого раздела есть UISegmentControl, один сегмент означает раздел 2 удаления, а другой ничего не делает. В методе viewDidLoad сегмент находится в выборе «Ничего не делать», и когда я нажимаю «удалить» сегмент. Раздел 2 удаляется, мой вопрос в том, могу ли я держать таблицу неподвижной, когда и после удаления раздела 2, я много искал об этом вопросе, и я потратил много времени на это. Но до сих пор не удается найти решение для реализации этого эффекта. Мой код, как показано ниже:Удалить разделы без прокрутки

CGPoint offset1 = [self.tableView contentOffset]; 
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:1];   
_deleteSec = YES; 
[self.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; 

[self.tableView setContentOffset:offset1 animated:NO]; 

После запуска приложения, моя первая акция для прокрутки вверх TableView вручную. Затем я нажимаю на сегмент удаления, код выше был выполнен, раздел 2 был удален, но TableView был прокручен до первоначального местоположения, которое начинается, когда приложение только начинается, и сначала отобразится TableView. Я искал в Интернете, я нашел код, который, как я думаю, будет работать для решения моей проблемы. Поэтому я добавил их, как показано ниже:

[self.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView reloadData]; 
[self.tableView layoutIfNeeded]; 

[self.tableView setContentOffset:offset1 animated:NO]; 

На этот раз, когда я первый раз, нажмите кнопку Удалить сегмент, он может сохранить еще и удалить раздел 2, но когда я нажимаю на другой сегмент или где-нибудь еще, действие сегмента метод не был выполнен, табличное представление просто прокручивается до самого исходного местоположения, это кажется мне связанным с проводкой. Может ли кто-нибудь объяснить мне это явление? Как решить эту проблему? Большое спасибо, если вы можете помочь мне уточнить мои сомнения.

ответ

1

Эта линия прямо здесь:

[self.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; 

попробовать удалить его.

Вы говорите, что стол оживает, так и будет. Если вы просто скажете, что он перезагружает данные, он не будет анимироваться, но содержимое в таблице будет обновлено.

+0

Это не работает после того, как я удаляю указанный вами код, у него такой же симптом, как я сказал в вопросе. – Coinnigh

+0

Вы также удалили (или закомментировали) 'setContentOffset: анимированные:'? – Fennelouski

Смежные вопросы