【发布时间】:2018-02-15 10:53:07
【问题描述】:
当我尝试调用此函数时收到错误Ambiguous reference to member 'TimelineSectionHeaderView':
if let view = TimelineSectionHeaderView.instantiateFromNib() {
return view
}
我在这里做错了什么?
import UIKit
class TimelineSectionHeaderView: UIView {
@IBOutlet weak var dayLabel: UILabel!
@IBOutlet weak var dateLabel: UILabel!
class func instantiateFromNib() -> TimelineSectionHeaderView? {
let x = UINib(nibName: "timelineSectionHeader", bundle: nil).instantiate(withOwner: nil, options: nil).first as? TimelineSectionHeaderView
print(x ?? "no value")
return x
}
}
【问题讨论】:
-
我从未尝试过,所以我最好的想法是 - 删除
if let。你试过简单的let吗?如果可行,那么如何将内容逐行添加到完整的if let和return,您没有包含表示它返回TimelineSectionHeaderView的代码。第三个也是最后一个想法:您的班级名称(很好)表明您可能有一个表格视图 - 您的问题中没有其他任何内容清楚地说明了这一点。考虑到这一点,您是否尝试过所有调试“想法”?你能用你的代码实例化一个简单的“虚拟标题视图”吗? -
我试过没有
if let(但只使用let)仍然没有工作。然而,我又观察到一件事……我的func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {根本没有被调用……同时函数func numberOfSections(in tableView: UITableView) -> Int正在被调用 -
那么这就是你开始的地方。不管这段代码在哪里——你没有提到为什么
return——试试simplelet看看为什么instantiateFromNib不起作用。更多...我只是注意到它谈到了ambiguous reference- 这意味着您有两个编译器无法解析的引用。就像TimeLineSectionView。您是否进行了全局搜索并查看了结果? -
我试过你的代码,它没有问题,它从 xib 文件加载视图。也许您的 xib/nib 文件或项目的其他部分存在问题。
-
哦,好吧……我试过没有
return它仍然给我错误。我进行了全局搜索,只有一个地方定义了TimelineSectionHeaderView……它告诉我在第一个声明的同一行上有一个重复的声明……但是,它现在编译并运行……我现在有一个不同的问题:@987654340 @
标签: ios swift cocoa-touch uiview