我是iOS新手,swift。我在我的tableView中有兩個部分。我希望能夠在第二部分做一個longPressGesture,而不是第一部分,使用戶能夠在第二部分中對tableview單元格進行重新排序。我將如何迅速做到這一點?任何人都可以在Swift中提供簡單的示例代碼嗎?tableView.addGestureRecognizer爲tableViewController的一個部分
感謝您的幫助,非常感謝!
我是iOS新手,swift。我在我的tableView中有兩個部分。我希望能夠在第二部分做一個longPressGesture,而不是第一部分,使用戶能夠在第二部分中對tableview單元格進行重新排序。我將如何迅速做到這一點?任何人都可以在Swift中提供簡單的示例代碼嗎?tableView.addGestureRecognizer爲tableViewController的一個部分
感謝您的幫助,非常感謝!
如果你只是想重新排序將單元格爲特定你可能會添加一些按鈕/動作啓用/禁用重新排序,也代表你可以用
你的代碼可以是這樣的:
//enable editing in the tableview to true when you want to enable reorder in your case may on the UILongPressGestureRecognizer action
//In viewDidLoad()
tblView.editing = true//set it to false to complete the reorder
委託方法可以是這樣的用途:
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
return UITableViewCellEditingStyle.None
}
func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
//get the reorder change in the path, you can do operation on the array
let itemToMove:String = arrData[fromIndexPath.row]//get the old path of item
arrData.removeAtIndex(fromIndexPath.row)//remove item from old path
arrData.insert(itemToMove, atIndex: toIndexPath.row)//at item at new path in array
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
//寫入代碼,以允許重新排序在所述特定部分/ indexpath if indexPath.section == 0 { return false } else { return true } //如果您不希望該項目可以重新訂購,則返回false。 }
func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath {
//check if the reorder is allow in the particular section/indexpath before the reorder is done, return the old path if you don't want to move at Proposed path
if sourceIndexPath.section != proposedDestinationIndexPath.section {
return sourceIndexPath
} else {
return proposedDestinationIndexPath
}
}
的UILongPressGestureRecognizer可以在tableview中或的tableview細胞根據需求
let longpress = UILongPressGestureRecognizer(target:self, action:#selector(HomeScreenTableViewController.longPressGestureRecognized))
tblView.addGestureRecognizer(longpress)
func longPressGestureRecognized() {
NSLog("Detected")
tblView.editing = true
}
或與相同的方法的tableview細胞如上述實施
let longpress = UILongPressGestureRecognizer(target:self, action:#selector(HomeScreenTableViewController.longPressGestureRecognized))
cell.addGestureRecognizer(longpress)
謝謝,它的工作! –
你只需要在第二節的gestureRecognizer或第二節的單元格? –
@ArunGupta嗨,第二節的所有單元格,而不是特定的單元格。基本上在第二部分中的所有內容。 –
將pan gesturere識別器添加到您的視圖控制器中,並執行一次檢查以檢測是否長按了正確的視圖(第二部分中的所有單元格)。 –