使用 swift 2 在 tableview 上处理单元格
Posted
技术标签:
【中文标题】使用 swift 2 在 tableview 上处理单元格【英文标题】:working with cell on tableview using swift 2 【发布时间】:2016-11-22 07:37:52 【问题描述】:我正在使用 Swift 2 开发应用程序。在我的应用程序中,我将 JSON 数据解析为表格视图。当我点击一个单元格时,它成功移动到另一个视图控制器,但我无法获取 json 数据。
这是我的视图控制器中的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
var cell = self.TableView.dequeueReusableCellWithIdentifier("Cell",forIndexPath: indexPath) as! CustomTableCell
let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString
let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString
cell.Bookdetail.text=strbookdetail as String
cell.Dropaddress.text=strdrop as String
return cell as CustomTableCell
//It helps to parse JSON data to table view.
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
TableView.deselectRowAtIndexPath(indexPath, animated: true)
let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller
navigationController?.pushViewController(tripcontroller, animated: true)
当点击单元格时,它有助于移动到其他视图控制器SecondController
在我的SecondController
中有两个UILabel
s。在这些标签中,我想显示数据,即 strbookdetail
和 strdrop
如何在两个视图控制器之间传递引用?
【问题讨论】:
文档中的 This topic 可能会对您有所帮助 你是不是推送VC成功了,但是你没有写传数据的代码 我已经通过情节提要提供连接一切正常,但在我的表格视图中有单元格..每个单元格都有不同的数据,所以如果我点击特定单元格,它应该根据它们的单元格获取数据 是的@Anbu.Karthik....我没有编写代码来传递数据 【参考方案1】:使用property
传递数据很容易做到:
在第二个vc
:
var dataFromBeforeVC:[String:String] = [String:String]()
override func viewDidLoad()
super.viewDidLoad()
initData ()
func initData()
// set data strbookdetail and strdrop to labelOne & labelTwo
labelOne.text = dataFromBeforeVC["strdrop"]
labelTwo.text = dataFromBeforeVC["strbookdetail"]
在第 1 个vc
:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
TableView.deselectRowAtIndexPath(indexPath, animated: true)
let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller
let cell:UITableViewCell = tableView.cellForRow(at: indexPath as IndexPath)!
let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString
let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString
tripcontroller.dataFromBeforeVC = [
"strdrop":strbookdetail,
"strdrop":strbookdetail
]
self.navigationController?.pushViewController(tripcontroller, animated: true)
【讨论】:
我为第二个控制器中的标签框创建了插座...我如何在我的第二个控制器 viewdidload 方法中引用它 不要直接从第一个视图控制器设置标签,传递数据并在viewWillAppear
等函数中使用它来更新标签。我还建议您创建一个 Struct 来保存解析的 JSON 数据,而不是一直索引到字典中。你也应该使用String
而不是NSString
@raj kumar 查看我的编辑答案!以上是关于使用 swift 2 在 tableview 上处理单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 2 中使用 TableView 项目访问视图控制器?
如何在 Swift 2.0 中的 TableView 中获取选中标记的项目
无法在 Swift 2 中将 TableView @IBOutlet 连接到 ViewController