代表

时间:2017-05-26 09:45:43

标签: ios swift delegates protocols

我的单元格中有一个委托方法,当我单击单元格内的批准按钮时调用该方法。

现在我希望这个委托方法具有返回类型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?
    }

2 个答案:

答案 0 :(得分:1)

在您的情况下,您无法使用Bool?,因为您的协议是@objc。因此,您将无法使用可选值等快速特定功能。

我建议您删除@obj-cOptional方法     协议CellDelegate {        func didTapApproveButton(indexpath:IndexPath) - >布尔?     }

答案 1 :(得分:0)

optional关键字不适用于Optional类型。如果您想将返回值类型标记为optional,则应使用问号:

func didTapApproveButton(indexpath: NSIndexPath ) -> Bool?

FIY optional关键字用于协议中的标记方法,因为实现不是必需的。出于某种原因,在自定义协议中,您无法使用此关键字。