我有一个视图(让我们称之为View 1 ),上面有一个按钮。单击按钮后,我向我的API发出GET http请求。它发回一个对象数组。
目前我要做的是,当用户按下查看1 上的按钮时,响应数据会传递到查看2 ,这是 < EM>的tableView 即可。然后用返回的数据填充表格视图单元格。
我将返回的JSON响应从视图1传递到视图2,如下所示:
dispatch_async(dispatch_get_main_queue()) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("BioView") as! BioTableViewController
vc.bioArray = parseJSON
self.presentViewController(vc, animated: true, completion: nil)
}
parseJSON包含返回的JSON响应。
在视图2中,我有以下内容:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.bioArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("bioCell", forIndexPath: indexPath) as! UITableViewCell
// Configure the cell...
if bioArray.count > 0 {
let weatherSummary: AnyObject = bioArray[indexPath.row]
for x in bioArray {
if let id = x["employeeName"] as? String{
cell.textLabel?.text = id
}
}
}
return cell
}
问题:
表视图不断重复返回的JSON数据中的最后一个值。见下文:
我的问题:
如何阻止值重复并显示响应数据中的所有值,当我点击tableview单元格时,它会转到另一个视图,并显示与单击单元格相关的所有详细信息。
答案 0 :(得分:1)
您不需要使用for
循环(因为它,表格视图保持重复值我猜)。 cellForRowAtIndexPath
也将为您做同样的事情。只需尝试下面的代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("bioCell", forIndexPath: indexPath) as! UITableViewCell
// Configure the cell...
let weatherSummary: AnyObject = bioArray[indexPath.row]
if let id = weatherSummary["employeeName"] as? String //Dont know the exact syntax.
{
cell.textLabel?.text = id
}
return cell
}
要摆脱if bioArray.count > 0
条件,你可以这样做
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.bioArray.count ?? 0 //This will return 0 rows if bioArray is empty.
}
希望这会有所帮助!