我的单元格中有一个委托方法,当我单击单元格内的批准按钮时调用该方法。
现在我希望这个委托方法具有返回类型Bool,我将使用它来更新单元格中的UI。
optional func didTapApproveButton(indexpath: NSIndexPath ) -> Bool
这是委托方法。 我想保持返回类型为可选,因为我将在VC中的方法内进行web服务调用,并根据响应我将返回true或false。
如何保持返回BOOL为可选
修改
这就是我在VC中使用方法的方法
func didTapApproveButton(indexpath: NSIndexPath) -> Bool? {
let user = self.dataCtlr.arrayOfUsers[indexpath.row];
if(Reachability.isConnectedToNetwork()){
self.dataCtlr.approveRejectUser(true, forUser: user, onSuccess: { (shouldRefreshView) in
return true
}, onFailure: { (result) in
return false
});
}
else{
UserDefaultsManager.sharedInstance.addApproveReject((user.id)!, isApproved: true);
return true
}
return nil
}
现在返回true或false不会返回到单元格,以便我可以更新单元格。
PS:我已经将协议更新为快速实现,如
protocol PendingRequestsTableViewCellDelegate{
func didTapApproveButton(indexpath: NSIndexPath ) -> Bool?
}
答案 0 :(得分:1)
在您的情况下,您无法使用Bool?
,因为您的协议是@objc。因此,您将无法使用可选值等快速特定功能。
我建议您删除@obj-c
和Optional
方法
协议CellDelegate {
func didTapApproveButton(indexpath:IndexPath) - >布尔?
}
答案 1 :(得分:0)
optional
关键字不适用于Optional
类型。如果您想将返回值类型标记为optional
,则应使用问号:
func didTapApproveButton(indexpath: NSIndexPath ) -> Bool?
FIY optional
关键字用于协议中的标记方法,因为实现不是必需的。出于某种原因,在自定义协议中,您无法使用此关键字。