gpt4 book ai didi

swift - 类型 'MasterViewController' 不符合协议(protocol) 'CropPerformanceControllerDelegate'

转载 作者:行者123 更新时间:2023-11-30 14:06:57 25 4
gpt4 key购买 nike

在我的应用程序上,有多个 View ,您可以在其中输入某些值(设置),因此这些设置会使用委托(delegate)发送回主视图。我已经有了另外 2 个 View 的设置,只需复制并粘贴所需的代码并更改变量,但这会引发错误; “类型‘MasterViewController’不符合协议(protocol)‘CropPerformanceControllerDelegate’”代码如下:

// MasterViewController
class MasterViewController: UIViewController, SettingsControllerDelegate, RainfallDataControllerDelegate, CropPerformanceControllerDelegate {

// Other variables/functions...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "MasterToSettings" {
let vc = segue.destinationViewController as! Settings
vc.delegate = self
}
if segue.identifier == "MasterToRainfallData" {
let vc = segue.destinationViewController as! RainfallData
vc.delegate = self
}
if segue.identifier == "MasterToCropPerformance" {
let vc = segue.destinationViewController as! CropPerformance
vc.delegate = self
}
}

func cropPerformanceSettingsSaved(controller: CropPerformance, irrigationResponseFactor: Double, wdImpactFactor: Double, potentialYield: Double) {
controller.navigationController?.popViewControllerAnimated(true)
irrigationResponseFactorM = irrigationResponseFactor
wdImpactFactorM = wdImpactFactor
potentialYieldM = potentialYield
}
}


// New View
// CropPerformanceView
protocol CropPerformanceControllerDelegate {
func cropPerformanceSettingsSaved(controller: CropPerformance, irrigationResponseFactor: Double, wdImpactFactor: Double, potentialYield: Double)
}

class CropPerformance: UIViewController {
var delegate: CropPerformanceControllerDelegate? = nil

// Other functions and Variables
@IBAction func updateCropSettings(sender: AnyObject) {
// Other stuff

if (delegate != nil) {
delegate!.cropPerformanceSettingsSaved(self, irrigationResponseFactor: irrigationResponseFactor!, wdImpactFactor: wdImpactFactor!, potentialYield: potentialYield!)
}
}
}

因此,这个完全相同的代码用于设置和降雨数据 View ,没有问题,但是现在在主视图上,“CropPerformanceControllerDelegate”似乎无法被识别,并且类“CropPerformance”的任何使用都会导致错误; “使用未声明的类型‘CropPerformance’”。我希望这是足够的信息,所有与委托(delegate)有关的代码都已发布,所有其他不必要的变量声明和函数我都省略了。

我寻找了其他答案,他们都说如果你想遵守协议(protocol),你需要实现所有必需的方法。这到底是什么意思呢?我的所有函数都在我的类中,当我删除有关委托(delegate)的部分时,代码可以完美运行。

提前致谢。

最佳答案

我无法解决问题,因为代码中没有错误,我只是从头开始,制作了一个新文档,复制并粘贴相同的代码,将名称更改为 CropPerformance2 并且它起作用了。 (它适用于除 CropPerformance 之外的任何其他名称)。这很奇怪,肯定与我删除的初始类“CropPerformace”有关,因为它没有从系统内存中完全删除,至少这是我的假设。总之,没有答案,我只是重新创建了一切,它起作用了。

关于swift - 类型 'MasterViewController' 不符合协议(protocol) 'CropPerformanceControllerDelegate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com