2014-12-16 2 views
2

У меня есть UIViewController, который содержит UITableView, это очень простой код, я просто хочу, чтобы ударить одну клетку и показывать больше и удалять и обрабатывать эти два события, это мой очень простой классIOS 8 UITableView Размах Для удаления

class ViewController: UIViewController , UITableViewDataSource , UITableViewDelegate { 

@IBOutlet weak var tableView: UITableView! 

let deleteClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in 
    println("Delete closure called") 
} 

let moreClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in 
    println("More closure called") 
} 



override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let identifier = "Cell" 
    let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath) as UITableViewCell 

    cell.textLabel?.text = "\(indexPath.row)" 

    return cell 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 100 
} 


func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? 
{ 
    var moreAction = UITableViewRowAction(style: .Default , title: "More") { (action : UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

     println("more") 
    } 
    moreAction.backgroundColor = UIColor.lightGrayColor() 

    var deleteAction = UITableViewRowAction(style: .Default, title: "Delete") { (action: UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

     println("delete") 
    } 

    return [moreAction , deleteAction] 
} 

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) 
{ 
    if (editingStyle == .Delete) 
    { 
     println("delete1") 

    } 
    if(editingStyle == .Insert) 
    { 
     println("insert") 

    } 

} 

функция editActionsForRowAtIndexPath вызывается, но ни одна из RowActions не появляется! В чем проблема? ,

ответ

1

вам нужно что-то сделать в обработчиках ваших пользовательских кнопок.

Например, с пользовательской кнопки удаления (и просто изменить свою метку и цвет фона), вы могли бы сделать somehting как:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 
    let button = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: NSLocalizedString("TitleOfDeleteButton", comment: "Delete"), handler: { (rowAction, indexPath) -> Void in 
     self.tableView(self.tableView!, commitEditingStyle: UITableViewCellEditingStyle.Delete, forRowAtIndexPath: indexPath) 
    }) 
    button.backgroundColor = UIColor.lightGrayColor() 
    return [button] 
} 

Кроме того, не забывайте, что этот метод протокола UITableViewDelegate пришел только с iOS8

Смежные вопросы