无法将详细视图控制器委派给主视图控制器

时间:2015-12-01 19:52:53

标签: swift

您好我尝试使用委托连接我的Master和Detail视图控制器。

在主视图控制器中,我在课程上面得到了这个:

protocol CategorySelectionDelegate: class {
    func categorySelected(id: Int)
    func progress(percentage: Float)
}

在课程中我将其声明为:

weak var delegate: CategorySelectionDelegate?

在详细视图控制器中我做

extension DetailViewController: CategorySelectionDelegate {
    func categorySelected(id: Int) {

        print("set row \(id)")

        selectedCategoryID = id
    }

    func progress(percentage: Float) {
        dispatch_async(dispatch_get_main_queue(), {
            self.progressView.setProgress(percentage, animated: true)
        })
    }
}

到目前为止一切顺利。一切正常。但当我尝试通过

连接它们时
self.delegate = DetailViewController

在我的MasterViewController中的viewDidLoad中,它说“无法将类型'DetailViewController.Type'的值分配给'CategorySelectionDelegate?'”

我在这里做错了什么?

1 个答案:

答案 0 :(得分:-1)

首先,如果您在主视图控制器类中创建了委托,则要在错误的类中分配委托,然后您要在详细视图控制器中响应委托,那么您需要在详细视图控制器中分配如此...

让masterVC:MasterlViewController = MasterViewController() masterVC.delegate = self

现在在上面的行中你会得到与上面告诉的相同的错误,所以你必须像在uitableview数据源中那样在类中包含委托名...

类DetailViewController:UIViewController,CategorySelectionDelegate