我想在离开视图控制器之前确认提交:
但是我收到了这个错误:
type () does not conform to protocol anyobject
这是出现错误的行:
self.navigationItem.backBarButtonItem?.target = self.validateBeforeBack("back", completion: { (bool) -> () in
self.navigationController?.popViewControllerAnimated(true)
})
UDATE :
所以解决方案是将目标更改为 action 并将函数调用放在Selector()
即:
self.navigationItem.backBarButtonItem?.action = Selector(self.validateBeforeBack("back", completion: { (bool) -> () in
self.navigationController?.popViewControllerAnimated(true)
}))
答案 0 :(得分:3)
目前还不清楚validateBeforeBack()
返回什么,因为你没有提供它。从错误中,我假设它返回()
(即" void"或"没有")。您无法将结果分配给属性。
我认为你真正想做的是按下按钮时调用此功能。这不是目标/操作按钮的工作方式。请参阅Concepts in Objective-C Programming中的Target-Action
。您需要将target
设置为您希望邮件发送到的对象,并action
设置为您要发送的选择器。
答案 1 :(得分:2)
popViewControllerAnimated(_:)
的返回类型为UIViewController?
,但函数validateBeforeBack(_:completion:)
的闭包参数具有Void
返回类型(validateBeforeBack(_:completion:)
的实现1}}函数,或者你传递给它的闭包,应该调整以考虑到这一点)
确保您的validateBeforeBack(_:completion:)
函数实际上有一个返回类型(因为它是赋值中的值)