用数据填充 TableView
Posted
技术标签:
【中文标题】用数据填充 TableView【英文标题】:Populate TableView with Data 【发布时间】:2015-09-06 23:23:08 【问题描述】:我正在制作一个类似于 Yelp 的应用程序。在视图控制器中,我有 2 个视图:带有一个名为“列表”的插座的 UITableView 和一个 mapView。在顶部我有一个搜索栏。
填充表格视图通常很简单,但我没有使用 UITableViewController,所以有点混乱。
在最顶部,我添加了一个全局变量
var cell: UITableViewCell?
然后在一个表函数中,我有
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
var cell = tableView.dequeueReusableCellWithIdentifier("attractionCell") as! AttractionCell!
if cell == nil
cell = AttractionCell(style: UITableViewCellStyle.Default, reuseIdentifier: "attractionCell")
cell.attractionName.text = title
return cell
在底部,我有一个用于单击搜索栏时的功能,然后它从 Parse 中获取数据,并将对象的名称分配给一个名为“title”的变量。
func searchBarSearchButtonClicked(searchBar: UISearchBar)
var Query = PFQuery(className:"Stores")
Query.whereKey("Location", nearGeoPoint:area, withinMiles: 5)
Query.findObjectsInBackgroundWithBlock
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil
let objects = objects as! [PFObject]
for object in objects
let title = object["name"] as! String
self.cell?.attractionName.text = title
为什么我的表格视图没有填充?
另外,在情节提要中,tableView 中的原型单元格属于 AttractionCell 类,并且有一个称为吸引单元的重用标识符
【问题讨论】:
和tableview的行数有关系吗? 您是否将 tableView 链接到委托和数据源?您的控制器是否符合(UITableViewDelegate
和)UITableViewDataSource
?
【参考方案1】:
首先这行不应该删除它:
if cell == nil
cell = AttractionCell(style: UITableViewCellStyle.Default, reuseIdentifier: "attractionCell")
同时删除全局变量单元格
那么你应该全局声明一个字符串数组
var arrayData = [String]()
在您的函数中删除该行:
self.cell?.attractionName.text = title
并添加这个
arrayData.append(title)
self.tableView.reloadData()
在 numberofRowInSection()
return arrayData.count
在 cellForRowAtIndexPath()
cell.attractionName.text = arrayData[indexPath.row]
【讨论】:
对不起,我忘了在搜索功能中提及,我将单元格文本分配给标题。因此,如果我没有将单元格作为全局变量,搜索功能将无法识别它 我们是否愿意发布您的所有代码和您遇到的错误 在顶部添加了所有内容 检查编辑代码,您仍然需要删除我告诉您删除的内容,按照说明操作即可 是的!现在我试图弄清楚如何将图像添加到单元格中。我是否将它们添加到同一个数组中?非常感谢【参考方案2】:尽量不要写“?”在第一个变量上...
像这样:
var cell: UITableViewCell
【讨论】:
当我这样做时,它说 ViewController 没有初始化器 当您调用该变量时,您必须使用 !为了让它工作以上是关于用数据填充 TableView的主要内容,如果未能解决你的问题,请参考以下文章