当我创建一个名为TestController
的新控制器时,我插入
<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate,UISearchBarDelegate>
到Test.h的接口
当我在模拟器上运行应用程序时,会出现许多问题 “不完整的实施”和“协议中未实施的方法”
我知道有些方法没有实现,但哪一个?我怎么知道我应该添加什么方法?
答案 0 :(得分:65)
显示问题导航器并展开“协议中未实现的方法”问题之一。第一个详细信息项将显示标题中定义方法的位置(因此,它所在的@protocol)。但更好的是,第二个细节将显示协议的名称。
切换到“问题”导航器。忽略不完整的实施消息,并查看方法未实施协议消息。您可以展开此消息以获取编译器提供的更多信息。第一个细节是您正在寻找的:
您可以在此处看到我忘记为tableView:numberOfRowsInSection:
添加方法。我可以复制此声明并将其粘贴到我自己的代码中以开始编写该方法。
请注意,我的问题导航器中存在三个问题。第三种是另一种缺失的方法,也可以以相同的方式进行扩展和复制。
答案 1 :(得分:6)
我可以想到两件你可以寻找的东西。首先,查看您的.h
文件,看看您是否有任何您可能忘记实现的方法原型,或者实现,然后更改实现,使其不再匹配原型的方法签名。
其次,如果编译器没有告诉您哪些方法丢失,请查看UITableViewDelegate
,UITableViewDataSource
等文档。在“任务”部分中,它列出了各种公共类和实例方法,它会在任何需要的地方旁边说“必需的方法”。例如,如果您的班级符合UITableViewDataSource
委托协议,则需要-tableView:cellForRowAtIndexPath:
和-tableView:numberOfRowsInSection:
。
答案 2 :(得分:0)
检查projectname-Prefix.pch文件。我被带走了并导入了一些我不应该拥有的东西,这使得它看起来像我在该类中实现的一个协议没有实现,实际上它是。请继续,确保您没有在那里包含任何协议。
在我的情况下,这是因为我不应该导入的文件是另一个协议文件,这与我收到警告的类没有直接关系。
当您清理* -Prefix.pch文件时,请确保关闭并重新打开Xcode。我不得不这样做才能接受它。
希望这会有所帮助!!
答案 3 :(得分:0)
检查您的实施文件,看看您是否已将其包括在内。如果你有这个位,你需要删除它。