我正在为tableview单元格选项使用滑动手势。
这是我的代码:
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
var shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Sil" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let shareMenu = UIAlertController(title: nil, message: "Emin misiniz ?", preferredStyle: .ActionSheet)
let twitterAction = UIAlertAction(title: "Sil", style: UIAlertActionStyle.Default, handler: self.deleteConversation)
let cancelAction = UIAlertAction(title: "İptal", style: UIAlertActionStyle.Cancel, handler: nil)
shareMenu.addAction(twitterAction)
shareMenu.addAction(cancelAction)
self.presentViewController(shareMenu, animated: true, completion: nil)
})
return [shareAction]
}
你可以在代码中看到,我正在使用deleteConversation
方法处理程序。但我不知道如何在deleteConversation
方法中获取行ID。
这是我的deleteConversation
方法:
func deleteConversation(alert: UIAlertAction!) {
//I need the row id here
println("sill")
}
如何在处理程序方法中获取行ID?
答案 0 :(得分:1)
Class YourClassNameHere
var cellIndexPath: NSIndexPath?
// Other stuff here...
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
cellIndexPath = indexPath
var shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Sil" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let shareMenu = UIAlertController(title: nil, message: "Emin misiniz ?", preferredStyle: .ActionSheet)
let twitterAction = UIAlertAction(title: "Sil", style: UIAlertActionStyle.Default, handler: self.deleteConversation)
let cancelAction = UIAlertAction(title: "İptal", style: UIAlertActionStyle.Cancel, handler: nil)
shareMenu.addAction(twitterAction)
shareMenu.addAction(cancelAction)
self.presentViewController(shareMenu, animated: true, completion: nil)
})
return [shareAction]
}
func deleteConversation(alert: UIAlertAction!) {
//Print row indexpath here
println("sill \(cellIndexPath.row)")
}
答案 1 :(得分:1)
你有几个选择。您可以将edit操作的row / indexPath保存到editActionsForRowAtIndexPath开头的新实例变量中,然后在deleteConversation函数中查看该实例变量。 (您需要在视图控制器中创建一个新的类范围的实例变量,以使此选项起作用。)
第二个选项:您可以在通话中传入内联块以创建Twitter操作:
func tableView(tableView: UITableView,
editActionsForRowAtIndexPath
indexPath: NSIndexPath) -> [AnyObject]?
{
//skipped code here...
let twitterAction = UIAlertAction(
title: "Sil",
style: UIAlertActionStyle.Default,
handler:
{
(alert: UIAlertAction!) in
println("User asked to delete twitter feed at index \(indexPath.row)")
})
//skipped more code here...
}
使用该语法,您将作为twitter动作处理程序传递一个闭包,并在线定义闭包。当你这样做时,闭包可以访问其封闭范围内的变量。在这种情况下,它允许我们访问传入的indexPath。
答案 2 :(得分:0)
我假设ID
你的意思是indexPath
?
为了获得它,您是否尝试在indexPathForSelectedRow
上使用self.tableView
?