在Swift中点击`UITableViewCell时会发现

时间:2015-12-09 04:25:24

标签: ios swift segue cell

这是我第一次尝试这个,但我无法弄明白。我已经阅读了很多这样的问题,但似乎没有一个问题可行,所以如果有人能够解释如何在细胞点击的时候进入详细视图我会非常感激!

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return names.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let LECell = tableView.dequeueReusableCellWithIdentifier("LocalPostsCell", forIndexPath: indexPath) as! LocalPostsTableViewCell

    imageFiles[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in
        if let downloadedImage = UIImage(data: data!) {

            LECell.postImage.image = downloadedImage
        }
    }


    LECell.postName.text = names[indexPath.row]
    LECell.postLocation.text = locations[indexPath.row]
    LECell.postDate.text = dates[indexPath.row]



    return LECell
}

let localPostsDetailSegue = "showLocalPostsDetailView"

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == localPostsDetailSegue {
        if let destination = segue.destinationViewController as? LocalPostsDetailViewController {
            if let postIndex = tableView.indexPathForSelectedRow[indexPath.row] {
                destination.postName = names[postIndex]
            }
        }
    }
}

3 个答案:

答案 0 :(得分:0)

我不确定你究竟在问什么,因为你的问题很广泛。无论您是否将编程设置权限转移到详细视图,切换到详细视图的实际操作都是通过简单地控制拖动/右键单击从故事板上的单元格拖动到使用的ViewController来完成的。要显示信息,请选择显示选项。请确保您的表视图具有导航控制器。如果没有,您可以选择TabelViewController,然后在顶部,单击编辑器,嵌入,导航控制器。这将自动在左上角放置一个后退按钮,以便在详细视图中完成后返回到表视图。我不确定这是不是你想要的,但我希望我能提供帮助。

答案 1 :(得分:0)

您不需要存储indexPath,这是由tableView为您完成的:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destination = segue.destination as? LocalPostsDetailViewController,
        let selectedIndex = tableView.indexPathForSelectedRow {
        destination.postName = names[selectedIndex]
    }
}

答案 2 :(得分:-1)

为此,您需要实施didSelectRowAtIndexPath的{​​{1}}委托方法。请参阅以下代码:

首先采用全局变量:

UITableView