将标签数据从表视图传递到另一个视图控制器
Posted
技术标签:
【中文标题】将标签数据从表视图传递到另一个视图控制器【英文标题】:Passing label data from a tableview to another view controller 【发布时间】:2016-04-15 14:17:53 【问题描述】:我使用此视频作为示例来说明我在下面的代码中所做的事情。 Swift To mysql using php我在从PHP获取数据到tableview时使用了视频的后半部分。我能够让表格视图在表格视图单元格行中成功显示来自 php 的项目。
import Foundation
import UIKit
import WebKit
class BreakfastGetController: UIViewController, UITableViewDelegate, UITableViewDataSource
@IBOutlet var tableView: UITableView!
var values:NSArray = []
override func viewDidLoad()
super.viewDidLoad()
get();
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func get()
let url = NSURL(string: "http://cgi.soic.indiana.edu/~team20/BreakfastGetInfo.php")
let data = NSData(contentsOfURL: url!)
values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
tableView.reloadData()
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return values.count;
//call the specific row and displying in the cell row
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SpecialCell
let maindata = values[indexPath.row]
cell.name.text = maindata["name"] as? String
return cell;
每个单元格行都有一个标签,该标签显示我从 php.ini 中提取的数据。我的问题是,我可以通过按钮将数据从标签推送(或显示)到另一个视图控制器吗?有点像购物车,我想在行中使用一个按钮将标签添加到另一个视图控制器,所以我可以在那里查看它(作为另一个标签或其他方法)。
我知道可能有关于将数据传递给另一个视图控制器的类似帖子,但我认为我可以使用(或至少找到)与此类似的帖子。
【问题讨论】:
您使用标签文本配置单元格。我假设这个文本存储在一个数组中。当您触摸一个单元格didSelectRowAtIndexPath
时,它会为您提供indexPath.row
,您可以使用它来访问该数组。从那里你可以分配你的下一个控制器并设置viewController.text = touchedText
,然后推送控制器。
如果你想设置一个 segue 方式,那么你将不得不覆盖 prepareForSegue
然后调用 tableView.indexPathForSelectedRows
并以这种方式获取 indexPath。然后(segue.destinationViewController as! SomeClass).text = touchedText
。这是仅有的 2 种合理的方法。
你不应该这样做 func get() let url = NSURL(string: "cgi.soic.indiana.edu/~team20/BreakfastGetInfo.php") let data = NSData(contentsOfURL: url!) values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as!NSArray tableView.reloadData() 在主线程上。
好的,谢谢! @A'saDickens。我将尝试您的两种方法,并在尝试后在这里报告
【参考方案1】:
是的。可能。
您希望将数据从 Tableview 传递到 Next View Controller。对吧?
编写 Tableview 委托方法
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
var value = contentArray.objectAtIndex(indexPath.row)
var secondVC : SecondViewController
= self.storyboard ?.instantiateViewControllerWithIdentifier(identifier: "SecondViewController")
secondVC.contentValue = value as? String
self.navigationController ?.pushViewController(secondVC, animated: YES)
希望对你有帮助。
【讨论】:
好的,我会试试这个 Delegate 方法,然后回复你。感谢您的帮助!以上是关于将标签数据从表视图传递到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章