2012-07-01 49 views
0

我有一個表視圖。我有多行。在編輯模式下執行重新排序時,我希望一行始終保留在第一個索引中。所以,如果一個用戶想要與第一行交換一行,它不應該允許它。但第二排和第三排之間應該是可以的。如何防止只有一行被排序-obj c

我該怎麼做? 非常感謝你提前

+0

不知道......你有沒有在'UITableViewDataSource'中試過'tableView:canMoveRowAtIndexPath:'? –

回答

2

設置的第一個表視圖單元格的showsReorderControlNOtableView:canMoveRowAtIndexPath:返回NO第一行。

您還可以實現的UITableViewDelegate方法tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:

這裏如果建議之一是,你可以返回替代指數路徑(0,0)。

返回值

索引路徑中的物體定位移動操作所需的行目的地 。如果 位置合適,則返回proposedDestinationIndexPath。

討論

這種方法允許目標行用於 特定行的定製,因爲它正在向上和向下移動一個表視圖。當 被拖動的行懸停在另一行上時,目標行向下滑動 以在視覺上爲重定位騰出空間;這是由proposedDestinationIndexPath標識的 位置。

+0

非常感謝DrummerB。第一種選擇在我身上不起作用。我已經嘗試過了。但第二個與「targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:」工作完美。再次感謝 – BPL

+0

是的,第一個選項只是隱藏了第一個單元格上的重新排序控件,所以你不能移動它。但是你仍然需要實現委託方法來防止其他單元被移動到第一行。 – DrummerB