Ios 类型()不符合协议anyobject
我正试图在离开视图控制器之前确认提交: 然而,我得到了这个错误:Ios 类型()不符合协议anyobject,ios,swift,swift2,Ios,Swift,Swift2,我正试图在离开视图控制器之前确认提交: 然而,我得到了这个错误: type () does not conform to protocol anyobject 以下是出现错误的行: self.navigationItem.backBarButtonItem?.target = self.validateBeforeBack("back", completion: { (bool) -> () in self.navigationController?.po
type () does not conform to protocol anyobject
以下是出现错误的行:
self.navigationItem.backBarButtonItem?.target = self.validateBeforeBack("back", completion: { (bool) -> () in
self.navigationController?.popViewControllerAnimated(true)
})
UDATE:
因此,解决方案是将target改为action,并将函数调用放在Selector()
即:
self.navigationItem.backBarButtonItem?.action = Selector(self.validateBeforeBack("back", completion: { (bool) -> () in
self.navigationController?.popViewControllerAnimated(true)
}))
不清楚
validateBeforeBack()
返回什么,因为您没有提供它。根据错误,我假设它返回()
(即“void”或“nothing”)。您不能将结果指定给属性
我想你真正想做的是在按下按钮时调用这个函数。目标/动作按钮不是这样工作的。请参阅中的
目标操作。您需要将target
设置为要将消息发送到的对象,并将action
设置为要发送的选择器。不清楚validateBeforeBack()
返回什么,因为您没有提供它。根据错误,我假设它返回()
(即“void”或“nothing”)。您不能将结果指定给属性
我想你真正想做的是在按下按钮时调用这个函数。目标/动作按钮不是这样工作的。请参阅中的目标操作。您需要将target
设置为要将消息发送到的对象,并将action
设置为要发送的选择器
popViewControllerAnimated(:)
的返回类型为UIViewController?
,但是函数的闭包参数validateBeforeBack(::completion:)
的返回类型为Void
返回类型(您的validateBeforeBack(::completion:)
函数,或者您传递给它的闭包,都应该考虑到这一点进行调整)
确保validateBeforeBack(uquo:completion:)
函数实际具有返回类型(因为它是赋值中的值)
popViewControllerAnimated(:)
的返回类型为UIViewController?
,但是函数的闭包参数validateBeforeBack(::completion:)
的返回类型为Void
返回类型(您的validateBeforeBack(::completion:)
函数,或者您传递给它的闭包,都应该考虑到这一点进行调整)
确保validateBeforeBack(uquo:completion:)
函数实际具有返回类型(因为它是赋值中的值)
将您的委托方法置于@optional@ChetanPrajapati我没有在本期中使用委托方法,您能解释一下您的委托方法的含义吗将您的委托方法置于@optional@ChetanPrajapati我没有在本期中使用委托方法,你能解释一下函数的含义吗?闭包应该返回被接受为目标还是动作?闭包既不是目标也不是动作。你读过Cocoa中目标行动模式的链接介绍吗?函数需要返回一个响应操作选择器的对象。通常,目标是视图控制器,操作是您要调用的方法。闭包应该返回什么以被接受为目标或操作?闭包既不是目标也不是操作。你读过Cocoa中目标行动模式的链接介绍吗?函数需要返回一个响应操作选择器的对象。通常,目标是视图控制器,操作是要调用的方法。