2016-04-24 50 views
2

我是iOS新手,swift。我在我的tableView中有兩個部分。我希望能夠在第二部分做一個longPressGesture,而不是第一部分,使用戶能夠在第二部分中對tableview單元格進行重新排序。我將如何迅速做到這一點?任何人都可以在Swift中提供簡單的示例代碼嗎?tableView.addGestureRecognizer爲tableViewController的一個部分

感謝您的幫助,非常感謝!

+0

你只需要在第二節的gestureRecognizer或第二節的單元格? –

+0

@ArunGupta嗨,第二節的所有單元格,而不是特定的單元格。基本上在第二部分中的所有內容。 –

+1

將pan gesturere識別器添加到您的視圖控制器中,並執行一次檢查以檢測是否長按了正確的視圖(第二部分中的所有單元格)。 –

回答

1

如果你只是想重新排序將單元格爲特定你可能會添加一些按鈕/動作啓用/禁用重新排序,也代表你可以用

你的代碼可以是這樣的:

//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) 
+0

謝謝,它的工作! –

相關問題