2015-10-13 44 views
0

我正在使用UITableView進行小型應用程序,我的TableView中有2個部分。在我的第一部分的最後一行中,有一個UISegmentControl,其中一個部分表示刪除第二部分,另一部分不做任何事情。在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,但是當我點擊了其他段或其他地方,該段採取行動方法沒有執行,tableview也滾動到初始位置本身,這似乎連線給我。有人能解釋我這種現象嗎?如何解決這個問題?如果你能幫助我澄清我的疑問,非常感謝。

回答

1

這條線就在這裏:

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

嘗試刪除它。

你正在告訴桌子做動畫,所以它會。如果你只是告訴它重新加載數據,它將不會動畫,但表中的內容將被更新。

+0

刪除您提到的代碼後,它不起作用,它與我在問題中提到的症狀相同。 – Coinnigh

+0

您是否還刪除(或註釋掉)'setContentOffset:animated:'? – Fennelouski