您好我尝试使用委托连接我的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?'”
我在这里做错了什么?
答案 0 :(得分:-1)
首先,如果您在主视图控制器类中创建了委托,则要在错误的类中分配委托,然后您要在详细视图控制器中响应委托,那么您需要在详细视图控制器中分配如此...
让masterVC:MasterlViewController = MasterViewController() masterVC.delegate = self
现在在上面的行中你会得到与上面告诉的相同的错误,所以你必须像在uitableview数据源中那样在类中包含委托名...
类DetailViewController:UIViewController,CategorySelectionDelegate