【发布时间】:2015-06-15 00:29:33
【问题描述】:
我对 Swift 非常陌生,并且仍在研究 Swift/Objective-C 语法和库。我正在尝试重新创建一个简单的图片列表,我可以在不同的图像视图上查看。以下是代码和错误消息,有人可以指导我正确的方向。
导入 UIKit
class MasterViewController: UITableViewController {
var detailViewController: DetailViewController? = nil
var objects = [AnyObject]()
override func awakeFromNib() {
super.awakeFromNib()
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
self.clearsSelectionOnViewWillAppear = false
self.preferredContentSize = CGSize(width: 320.0, height: 600.0)
}
}
override func viewDidLoad() {
super.viewDidLoad()
let fm = NSFileManager.defaultManager()
let path = NSBundle.mainBundle().resourcePath!
let items = fm.contentsOfDirectoryAtPath(path, error: nil)
for item in items as! [String] {
if item.hasPrefix("IMG_") {
objects.append(item)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
let detailViewController = segue.destinationViewController as! DetailViewController
detailViewController.detailItem = objects[indexPath.row] as? String
}
}
}
// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objects.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
let object: (AnyObject) = objects[indexPath.row]
cell.textLabel!.text = object as? String
return cell
}
}
我在这段代码中得到了错误:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
let detailViewController = segue.destinationViewController as! DetailViewController
detailViewController.detailItem = objects[indexPath.row] as? String
}
}
}
控制台中的错误信息如下:
无法将“UINavigationController”(0x10a979698)类型的值转换为“Project1.DetailViewController”(0x1090f27a0)。
【问题讨论】:
-
你能分享它失败的那一行吗?
-
失败的行是 let detailViewController = segue.destinationViewController as! DetailViewController
-
这与Objective-C无关。请不要滥用标签,尤其是语言标签,因为这会影响文章中的语法高亮。