如何在Popover中禁用编辑UITableViewController

时间:2016-05-15 12:02:54

标签: ios swift uitableview popover editing

我打开FirstViewController中的编辑表

@IBAction func editButtonPressed(sender: UIBarButtonItem) {
     self.tableView.allowsMultipleSelectionDuringEditing = true
     if self.editing {
          let popoverEditMenu = self.storyboard?.instantiateViewControllerWithIdentifier("popoverEditMenu") as! EditMenuTableViewController
          popoverEditMenu.modalPresentationStyle = .Popover
          popoverEditMenu.popoverPresentationController!.delegate = self
          let popover: UIPopoverPresentationController = popoverEditMenu.popoverPresentationController!
          popover.barButtonItem = sender
          presentViewController(popoverEditMenu, animated: true, completion: nil)
      } else {
          editButton.image = UIImage(named: "profile_more")
          self.editing = !self.editing
      }
}

成功添加了编辑表。完成上述操作后,我想通过单击popover中的表格单元格来完成编辑,代码为:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let firstTableVC = self.storyboard?.instantiateViewControllerWithIdentifier("firstTableVC") as! FirstTableViewController

    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    switch indexPath.row {
    case 0:
        self.dismissViewControllerAnimated(true, completion: nil)
        firstTableVC.editing = false // Disable Editing
        firstTableVC.editButton.image = UIImage(named: "1461294921_15.Pencil")
    default:
        break
    }
}

但按钮图像没有变化,表格编辑模式未禁用

2 个答案:

答案 0 :(得分:1)

找到解决方案!

使用委托解决了这个问题。感谢@pbasdf的提示

import UIKit

protocol SecondTableViewControllerDelegate {
    func endEditing()
}

class SecondTableViewController: UITableViewController {

    var delegate: SecondTableViewControllerDelegate?

    ...

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        switch indexPath.row {
        case 0:
            self.dismissViewControllerAnimated(true, completion: nil)
            delegate?.endEditing()
        default:
            break
        }
    }
}

在FirstViewController中委派函数。您需要在FirstViewController

中指定委托继承
func endEditing() {
    self.editing = false
    editButton.image = UIImage(named: "1461294921_15.Pencil")
}

答案 1 :(得分:0)

尝试使用

firstTableVC.editButton.setImage(UIImage(named:"1461294921_15.Pencil"),  forState: UIControlState.Normal)

它必须有效。