在这本苹果指南的帮助下,我开始学习Swift:
https://itunes.apple.com/it/book/app-development-with-swift/id1219117996
现在我陷入了一个小问题,我想了解如何解决,但从指南它不是很清楚。
情况就是这样
结果
来自指南
点击单元格时的静态表视图控制器。开始时间
称为“AddEditEmojiTableViewController”。记住删除或
主情节提要,将静态表视图的“自定义类”设置为
“AddEditEmojiTableViewController”。将属性添加到
AddEditEmojiTableViewController类,名为emoji,类型为
表情符号。在prepare(for segue:)方法中
EmojiTableViewController,您将检查标识符,将
目标视图控制器,访问要传递的对象,然后分配
属性:
AddedItemTableViewController
import UIKit
class AddEditEmojiTableTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let emoji = emoji{
symbolTextfield.text = emoji.symbol
nameTextfield.text = emoji.name
descriptionTextfield.text = emoji.description
usageDescription.text = emoji.usage
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
var emoji: Emoji! = nil
@IBOutlet weak var symbolTextfield: UITextField!
@IBOutlet weak var nameTextfield: UITextField!
@IBOutlet weak var descriptionTextfield: UITextField!
@IBOutlet weak var usageDescription: UITextField!
}
这个
准备
EmojiTableViewController
文件,如指南中所述。
(EditEmoji是从单元格到静态表视图的顺序)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "EditEmoji" {
let indexPath = tableView.indexPathForSelectedRow!
let emoji = emojis[indexPath.row]
let addEditEmojiTableViewController = segue.destination
as! AddEditEmojiTableViewController
addEditEmojiTableViewController.emoji = emoji
}
}
以这种方式打开prepare函数,当我点击一个单元格时,就会出现这个错误崩溃
Could not cast value of type 'UINavigationController' .. to 'Emoji.AddEditEmojiTableTableViewController' ....
... Could not cast value of type 'UINavigationController' ... to 'Emoji.AddEditEmojiTableTableViewController' ...
所以,看看stackoverflow,我用这种方式修改了函数,现在它可以工作了。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "EditEmoji"{
let indexPath = tableView.indexPathForSelectedRow!
let emoji = emojis[indexPath.row]
let test1 = segue.destination as! UINavigationController
let test2 = test1.topViewController as! AddEditEmojiTableTableViewController
test2.emoji = emoji
}
}
所以我的问题是:导游错了吗?指南是否未更新为最新的Swift版本?