我閱讀了有關如何管理UITableView中行的刪除和重新排序的文檔。我創建了編輯按鈕,我可以刪除行。我希望用戶能夠對行重新排序。這似乎很簡單,但我不明白如何告訴細胞,他們可以被移動。如何使用刪除按鈕顯示UITableView中的重新排序控件
要告訴他們可以刪除的行我使用editingStyleForRowAtIndexPath,但如何告訴單元它也可以被移動,我在哪裏設置showsReorderControl?我試圖放置在cellForRowAtIndexPath,但沒有顯示。
謝謝!
我閱讀了有關如何管理UITableView中行的刪除和重新排序的文檔。我創建了編輯按鈕,我可以刪除行。我希望用戶能夠對行重新排序。這似乎很簡單,但我不明白如何告訴細胞,他們可以被移動。如何使用刪除按鈕顯示UITableView中的重新排序控件
要告訴他們可以刪除的行我使用editingStyleForRowAtIndexPath,但如何告訴單元它也可以被移動,我在哪裏設置showsReorderControl?我試圖放置在cellForRowAtIndexPath,但沒有顯示。
謝謝!
你不得不說,行可以被移動:
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
和實施該委託更新您的數據源:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
Managing the Reordering of Rows添加到@benoit上面的答案。如果你的模型恰好是一個可變的數組,這樣的事情就足夠了的tableView:moveRowAtIndexPath:toIndexPath:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
id objectToMove = [_objects objectAtIndex:fromIndexPath.row];
[_objects removeObjectAtIndex:fromIndexPath.row];
[_objects insertObject:objectToMove atIndex:toIndexPath.row];
[tableView reloadData];
[self saveObjects]; // A method of your own to make new positions persistent
}
嘗試。 。 。這將處理簡單的tableview的情況下
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
[tableData insertObject: [tableData objectAtIndex:sourceIndexPath.row] atIndex:destinationIndexPath.row];
[tableData removeObjectAtIndex:(sourceIndexPath.row + 1)];
}
在我的情況下,蘋果的文件中,並在這裏的答案中提到我已經實現了所有必需的UITableViewDelegate方法安排和細胞的更新,但仍不能看到的重新排序控制。最終我發現這是因爲我重寫了layoutSubviews方法而不調用超級的默認實現。在我添加[super layoutSubviews]之後,我的重新排序控件終於出現了。
我們需要調用[super layoutSubviews]的原因是,當我們切換表格的編輯屬性時,它會調用單元格的layoutSubviews方法,系統提供的控件(如重新排序控件)顯示在UITableViewCell的默認layoutSubviews方法中。一旦你意識到這一點,你也可以修改你的layoutSubviews實現來改變你的單元格的外觀,這取決於它是否被編輯,以便在重新排序控件出現時使它不那麼笨拙。
所以這裏是該行重新排序清單:
這就是牛逼他正在閱讀的文檔。我已經完全按照這種方式實現了該方法。但我仍然無法移動任何東西。我可以刪除行。 – 2010-12-08 13:26:23