Swift UITableViewCell IBOutlets 未显示在 StoryBoard 中
Swift UITableViewCell IBOutlets not displaying in StoryBoard
我正在尝试遵循此 tutorial 并将其添加到我的应用程序中。然而,存在一些问题,所以我尝试在 Xcode 中完全从头开始重新创建项目。同样的问题不断出现。
首先在声明 IBOutlets
的 TableViewCell class 的 SidePanelViewController 中
class AnimalCell: UITabelViewCell {
@IBOutlet weak var animalImageView: UIImageView!
@IBOutlet weak var imageNameLabel: UILabel!
@IBOutlet weak var imageCreatorLabel: UILabel!
func configureForAnimal(animal: Animal) {
animalImageView.image = animal.image
imageNameLabel.text = animal.title
imageCreatorLabel.text = animal.creator
}
}
没有出现在情节提要中,所以当我点击 AnimalCell 时,这些 IBOutlets 应该在那里供我连接到位于左视图控制器和右视图控制器中的 TableView 中,但没有任何显示。唯一可以工作或允许我在 StoryBoard 中创建连接的 IBOutlet 是对象是否是实际的视图控制器。
我尝试使用辅助编辑器控件拖动 UI 元素并连接它们,最终圆圈中的点显示其已连接,即使它在我的 Storyboard Outlets 连接列表中仍然显示为空白,(但是如果我关闭并重新打开 xcode 我必须再次执行此操作)。如果我将其与最终项目和从网站下载的入门项目进行比较,这是不正确的。在网站的入门项目中,IBActions 和 IBOutlets 是预先连接的,因此它们在情节提要中显示得很好,如果我尝试从头开始执行此操作,我无法理解,为什么它们不显示在 Xcode 中在我的出口连接列表中? (即使我从网站下载的版本中直接将 SidePanelViewController 的代码剪切并粘贴到我的代码中,仍然无法正常工作)。
其次,当我实际上 运行 模拟器上的项目时,它在我的 App Delegate 文件和我的 SidePanelViewController 中抛出 2 个错误,它似乎突出显示
let cell = tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.AnimalCell, forIndexPath: indexPath) as AnimalCell
完整的功能是
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.AnimalCell, forIndexPath: indexPath) as AnimalCell
cell.configureForAnimal(animals[indexPath.row])
return cell
}
并且在 App Delegate 中,我得到了相同的线程 1:Exc_BreakPoint(代码=Exc_I386_BPT,子代码 = 0x0)和这个在线
class AppDelegate: UIResponder, UIApplicationDelegate {
另外我认为错误也可能在
SidePanelViewController @objc
protocol SidePanelViewControllerDelegate {
func animalSelected(animal: Animal)
}
从网站运行s下载的最终版本在模拟器中完美无缺,没有错误。但它们都是相同的代码,所以我很困惑为什么我重新创建的版本不起作用。此外,当我使用下载的入门项目完成代码时,左侧面板会滑动,但小狗按钮也充当左侧按钮,因此它不会向右滑动,但模拟器中的 运行ning 没有错误出现虽然与我从头开始重新创建的相比有所提高。
我删除了派生数据中的内容,删除了 Xcode,作为新安装甚至恢复到 6.1,因为 6.1.1 sourcekit 比 6.1 更频繁地崩溃。
我很困惑这是怎么回事,为什么教程中的原始代码在我这样做时不起作用,但下载的最终版本却起作用。我不知道我做错了什么。我是 Xcode 和 Swift 的新手。谁能帮忙?
您可能忘记将 AnimalCell
设置为情节提要中单元格的 class。
您需要 select 单元格,然后在实用程序边栏中,转到身份检查器并使用 AnimalCell 填写 Class 字段。
Command + Option + 3 将直接带您到正确的屏幕。
我正在尝试遵循此 tutorial 并将其添加到我的应用程序中。然而,存在一些问题,所以我尝试在 Xcode 中完全从头开始重新创建项目。同样的问题不断出现。
首先在声明 IBOutlets
的 TableViewCell class 的 SidePanelViewController 中class AnimalCell: UITabelViewCell {
@IBOutlet weak var animalImageView: UIImageView!
@IBOutlet weak var imageNameLabel: UILabel!
@IBOutlet weak var imageCreatorLabel: UILabel!
func configureForAnimal(animal: Animal) {
animalImageView.image = animal.image
imageNameLabel.text = animal.title
imageCreatorLabel.text = animal.creator
}
}
没有出现在情节提要中,所以当我点击 AnimalCell 时,这些 IBOutlets 应该在那里供我连接到位于左视图控制器和右视图控制器中的 TableView 中,但没有任何显示。唯一可以工作或允许我在 StoryBoard 中创建连接的 IBOutlet 是对象是否是实际的视图控制器。
我尝试使用辅助编辑器控件拖动 UI 元素并连接它们,最终圆圈中的点显示其已连接,即使它在我的 Storyboard Outlets 连接列表中仍然显示为空白,(但是如果我关闭并重新打开 xcode 我必须再次执行此操作)。如果我将其与最终项目和从网站下载的入门项目进行比较,这是不正确的。在网站的入门项目中,IBActions 和 IBOutlets 是预先连接的,因此它们在情节提要中显示得很好,如果我尝试从头开始执行此操作,我无法理解,为什么它们不显示在 Xcode 中在我的出口连接列表中? (即使我从网站下载的版本中直接将 SidePanelViewController 的代码剪切并粘贴到我的代码中,仍然无法正常工作)。
其次,当我实际上 运行 模拟器上的项目时,它在我的 App Delegate 文件和我的 SidePanelViewController 中抛出 2 个错误,它似乎突出显示
let cell = tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.AnimalCell, forIndexPath: indexPath) as AnimalCell
完整的功能是
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.AnimalCell, forIndexPath: indexPath) as AnimalCell
cell.configureForAnimal(animals[indexPath.row])
return cell
}
并且在 App Delegate 中,我得到了相同的线程 1:Exc_BreakPoint(代码=Exc_I386_BPT,子代码 = 0x0)和这个在线
class AppDelegate: UIResponder, UIApplicationDelegate {
另外我认为错误也可能在
SidePanelViewController @objc
protocol SidePanelViewControllerDelegate {
func animalSelected(animal: Animal)
}
从网站运行s下载的最终版本在模拟器中完美无缺,没有错误。但它们都是相同的代码,所以我很困惑为什么我重新创建的版本不起作用。此外,当我使用下载的入门项目完成代码时,左侧面板会滑动,但小狗按钮也充当左侧按钮,因此它不会向右滑动,但模拟器中的 运行ning 没有错误出现虽然与我从头开始重新创建的相比有所提高。
我删除了派生数据中的内容,删除了 Xcode,作为新安装甚至恢复到 6.1,因为 6.1.1 sourcekit 比 6.1 更频繁地崩溃。
我很困惑这是怎么回事,为什么教程中的原始代码在我这样做时不起作用,但下载的最终版本却起作用。我不知道我做错了什么。我是 Xcode 和 Swift 的新手。谁能帮忙?
您可能忘记将 AnimalCell
设置为情节提要中单元格的 class。
您需要 select 单元格,然后在实用程序边栏中,转到身份检查器并使用 AnimalCell 填写 Class 字段。
Command + Option + 3 将直接带您到正确的屏幕。