从UIButton更改后的UIBarButtonItem错误

时间:2019-05-01 01:27:53

标签: swift

我遇到了这个问题,我得到了一些示例代码,并尝试与UIBarButtonItems交换两个普通按钮。

谁能说出我的代码有什么问题,我不知道普通按钮和UIBarButtonItems有什么不同。

因此我将showPopup中的发件人从UIView更改为UIButton,但是现在又出现了另一个错误(请参见下面的屏幕快照)

Screenshot of the error messages and the code

很抱歉,发布的是代码图片,而不是代码。 以下是shopPopup函数:

func showPopup(sender: UIButton, mode:String, text:String="", row:Int=0) {
if !(mode=="edit" || mode=="new") { return }

let popVC = storyboard?.instantiateViewController(withIdentifier: "NewPopup") as! NewPopupVC
popVC.mode = mode
popVC.currentText = text
popVC.currentRow = row
popVC.modalPresentationStyle = .popover

let popPC = popVC.popoverPresentationController!
popPC.sourceView = sender
popPC.sourceRect = sender.bounds
popPC.delegate = self
popPC.permittedArrowDirections = [.up, .down]

present(popVC, animated:true, completion: nil) 
}

这里是功能addButton。那就是第一个错误所在。

@IBAction func addButton(_ sender: UIBarButtonItem) {
    showPopup(sender: sender, mode: "new")
}

,这里是第二个错误发生的部分。

@objc func handleLongPress(_ gesture: UILongPressGestureRecognizer) {
if gesture.state != .began { return }

let pt = gesture.location(in: tableView)
if let path = tableView.indexPathForRow(at: pt),
   let row = (path as NSIndexPath?)?.row,
   let cell = tableView.cellForRow(at: path)
{

  showPopup(sender: cell,
            mode: "edit",
            text: todoList[row],
            row: row)
}
}

已更新最近一次发生的错误的屏幕截图。 Screenshot

1 个答案:

答案 0 :(得分:0)

您必须这样做

 func showPopup(sender: UIButton, mode: String, text:String = "", row:Int = 0)

senderUIView更改为UIButton