ios - 从 UITableViewController 中的选定行获取选定的标签文本

标签 ios swift uitableview

我对 Swift 还很陌生,所以请耐心等待。

目前,我已从 JSON 文件加载数据,然后将其显示到各个单元格上。

我有一个自定义单元类,它具有必要的标 checkout 口(名称和编号)。

我想要做的是在给定行上从指定标签文本中检索数据,然后将其传递到另一个 ViewController。

例如第 3 行有两个标签:“Data”和“2004”。我选择了第 3 行,并希望获取此单元格“2004”值并将其分配给一个变量,然后将该变量传递给另一个 ViewController。 (“2004”将被视为我的自定义单元类中的数字标 checkout 口,即 cell.number)

这里是一些可能有帮助的代码:

表格 View Controller

import UIKit

class TableViewController: UITableViewController, UINavigationControllerDelegate {

    @IBOutlet var segmentedSortOption: UISegmentedControl!
    var array : NSArray = DataClass.dataStruct.jsonResult["data"] as NSArray

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var myCell:cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as cell
        var upperCasedNames = array[indexPath.row]["name"] as? String

        if segmentedSortOption.selectedSegmentIndex == 0 {

            myCell.No.text = array[indexPath.row]["no"] as? String

        } else if segmentedSortOption.selectedSegmentIndex == 1 {

            if let unsortedEvents = DataClass.dataStruct.jsonResult["data"] as NSArray {

                let descriptor = NSSortDescriptor(key: "name", ascending: true, selector: "caseInsensitiveCompare:")
                let aToZ = unsortedEvents.sortedArrayUsingDescriptors([descriptor])

                myCell.No.text = aToZ[indexPath.row]["no"] as? String
            }  
        }    
        return myCell
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "selectedItem" {
            if let indexPath = self.tableView.indexPathForSelectedRow() {
                let destinationController = segue.destinationViewController as ViewController
                destinationController.eventData = indexPath.row as Int   
            }   
        } 

自定义单元格类

import UIKit

class cell: UITableViewCell {

    @IBOutlet var name: UILabel!

    @IBOutlet var number: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

如果您还有其他问题,请询问。

如果您有更好的选择,也请提出建议。

谢谢!

编辑:忘记提及一个关键问题。有一个分段控件可以将数据从 JSON 文件中的给定顺序重新组织为字母顺序。由于顺序完全不同,单元格 indexPath.row 在 A-Z View 的实例中变得无用。

最佳答案

在您的 prepareForSegue 中,您需要获取使用 cellForRowAtIndexPath 选择的单元格(与 tableView(tableView: UITableView, cellForRowAtIndexPath 不同) )并将其传递给 destinationController,请参阅以下示例:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "selectedItem" {
        if let indexPath = self.tableView.indexPathForSelectedRow() {

            // get the cell associated with the indexPath selected.
            let cell = self.tableView.cellForRowAtIndexPath(indexPath) as cell!

            // get the label text to pass to destinationController
            var text1 = cell.name.text
            var text2 = cell.number.text

            let destinationController = segue.destinationViewController as ViewController
            destinationController.eventData = indexPath.row as Int   
        }   
    } 
}

希望这对您有帮助。

关于ios - 从 UITableViewController 中的选定行获取选定的标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998943/

相关文章:

ios - 将 BOOL 类型的默认值设置为 YES

ios - 如何在带有动画的图像之间切换?

ios - 在另一个类中时,Swift Firebase 身份验证不起作用

objective-c - 从 NSArray 为 UITableView 创建索引

ios - 将数据源设置为 UITableView 时出现运行时错误

ios - 如何根据用户是否登录来处理在应用程序启动时显示不同的 View Controller ?

android - 如果不固定父容器的高度,GridView.Count 不可见

ios - 全屏 View 在 HStack 和水平 ScrollView 中不起作用

ios - 比较集合中的元素并通过检查属性删除

ios - 如何从同一个 XIB 将 UITableViewCell 连接到 UITableView?