如何修复ViewController不符合ViewControllerDelegate

时间:2014-11-19 05:04:12

标签: ios core-data swift xcode6 uistoryboardsegue

我有一个CoreData项目,我已经设置了 FilterViewController ,我希望在 DisplayResultsViewController 中显示结果。

我知道这与委托有关,但我很难解决它。我知道我不是第一个将数据从一个VC转移到另一个VC的人,但我无法找到答案。

// Top of FilterViewController
import UIKit
import CoreData

protocol FilterViewControllerDelegate: class {
    func filterViewController(filter: FilterViewController,
        didSelectPredicate predicate:NSPredicate?,
        sortDescriptor:NSSortDescriptor?)
}

// Predicates set here
// IBAction to trigger the segue
@IBAction func filter(sender: UIBarButtonItem) {

    delegate!.filterViewController(self,
        didSelectPredicate: selectedPredicate,
        sortDescriptor: selectedSortDescriptor)

    dismissViewControllerAnimated(true, completion:nil)
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "toDisplaySearchResults" {

        let navController = segue.destinationViewController as UINavigationController
        let filterVC = navController.topViewController as StretchSelectorViewController


        filterVC.coreDataStack = coreDataStack
        filterVC.delegate = self // **ERROR here
    }
}

1 个答案:

答案 0 :(得分:0)

您没有显示声明包含失败方法的类的代码(从而确定self是什么),因此我们错过了代码的关键行。但一般来说,您的视图控制器应声明为:

class MyViewController: UIViewController, ViewControllerDelegate {
    ....
}

...冒号后面的第一个类(UIViewController)表示超类,后面的后续项标识了您的类声明符合性的协议。该错误表明您的类不符合ViewControllerDelegate协议,因此它必须缺少该声明。