将标签数据从tableview传递到另一个视图控制器
问题描述:
我正在使用这个视频作为示例,以我的代码如下。 Swift To MYSQL using PHP当从PHP获取数据到tableview时,我使用了视频的后半部分。我能够让tableview在表格视图单元格行中成功显示来自php的项目。将标签数据从tableview传递到另一个视图控制器
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提取的数据。我的问题是,我可以使用按钮将(或显示)该数据从标签推送到另一个视图控制器吗?有点像购物车,我想在行中添加一个按钮,将标签添加到另一个视图控制器,所以我可以在那里查看它(作为另一个标签或其他方法)。
我知道可能有关于将数据传递给另一个视图控制器的类似帖子,但没有我认为我可以使用(或至少找到)类似于此。
答
是的。可能。
您希望将数据从Tableview传递到Next View Controller。对?
写泰伯维委托方法
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)
}
希望它能帮助。
+0
后返回此处。好的,我会尝试使用这种委托方法并回复您。谢谢您的帮助! – user3795450
您可以使用标签文本配置单元格。我假设这个文本存储在一个数组中。当你触摸一个单元格'didSelectRowAtIndexPath'被调用时,会给你'indexPath.row',你可以使用它来访问该数组。从那里你可以分配你的下一个控制器并设置'viewController.text = touchedText'然后推动控制器。 –
如果你想设置一个segue的方式,那么你将不得不重写'prepareForSegue',然后调用'tableView.indexPathForSelectedRows'并获得indexPath。然后'(segue.destinationViewController as!SomeClass).text = touchedText'。这是唯一合理的两种方法。 –
你不应该做func get(){ let url = NSURL(string:“http://cgi.soic.indiana.edu/~team20/BreakfastGetInfo.php”) let data = NSData(contentsOfURL:url!) values = try! NSJSONSerialization.JSONObjectWithData(data !,选项:NSJSONReadingOptions.MutableContainers)as! NSArray tableView.reloadData() }。 – satheeshwaran