【问题标题】:Segue from tableview to detail doesn't work从 tableview 到 detail 的 Segue 不起作用
【发布时间】:2016-06-04 20:53:16
【问题描述】:

我正在为我们镇上的商店构建一个表格视图,我希望能够点击商店的名称来查看更多详细信息。你可以找到一些 main.storyboard 的图片和文件here。我还添加了关于点击问题的视频。

masterViewController的代码如下:

import UIKit

class MasterTableViewController: UITableViewController {

// MARK: - Properties
var detailViewController: DetailViewController? = nil
var winkels = [Winkel]()

// MARK: - View Setup
override func viewDidLoad() {
    super.viewDidLoad()

    winkels = [
        Winkel(category:"Literature", name:"Standaard"),
        Winkel(category:"Literature", name:"Acco"),
        Winkel(category:"Clothing", name:"H&M"),
        Winkel(category:"Clothing", name:"C&A"),
        Winkel(category:"Clothing", name:"Patio"),
        Winkel(category:"Restaurants", name:"De 46"),
        Winkel(category:"Restaurants", name:"Het hoekske"),
        Winkel(category:"Supermarkets", name:"Carrefour"),
        Winkel(category:"Supermarkets", name:"Colruyt")
    ]

    winkels.sortInPlace({ $0.name < $1.name })

    if let splitViewController = splitViewController {
        let controllers = splitViewController.viewControllers
        detailViewController = (controllers[controllers.count - 1] as! UINavigationController).topViewController as? DetailViewController
    }
    self.tableView.reloadData()
}

override func viewWillAppear(animated: Bool) {
    clearsSelectionOnViewWillAppear = splitViewController!.collapsed
    super.viewWillAppear(animated)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return winkels.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

    let winkel = winkels[indexPath.row]
    cell.textLabel!.text = winkel.name
    cell.detailTextLabel?.text = winkel.category
    return cell
}

// MARK: - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetail" {
        if let indexPath = tableView.indexPathForSelectedRow {
            let winkel = winkels[indexPath.row]
            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailWinkel = winkel
            controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true
        }
    }
 }

}

最后一部分显示到下一个导航控制器的 segue(名为 showDetail,并且是一种“显示详细信息(例如替换)”。

下面是detailViewController的代码:

import UIKit

class DetailViewController: UIViewController {

@IBOutlet weak var detailDescriptionLabel: UILabel!
@IBOutlet weak var WinkelImageView: UIImageView!

var detailWinkel: Winkel? {
    didSet {
        configureView()
    }
}

func configureView() {
    if let detailWinkel = detailWinkel {
        if let detailDescriptionLabel = detailDescriptionLabel, WinkelImageView = WinkelImageView {
            detailDescriptionLabel.text = detailWinkel.name
            WinkelImageView.image = UIImage(named: detailWinkel.name)
            title = detailWinkel.category
        }
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    configureView()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

我不确定我做错了什么,所以点击不起作用..提前感谢您教我如何解决这个问题!

【问题讨论】:

    标签: ios swift uitableview segue


    【解决方案1】:

    你需要为第一类中的tableview实现方法didSelectRowAtIndexPath。在此,您将执行实际从一个 ViewController 移动到另一个 ViewController 的 segue。

    【讨论】:

    • 谢谢!像魅力一样工作
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多