Swift 如何返回单元格中的多个元素?
我想返回单元格的多个元素。我怎么做?这就是我正在研究的代码Swift 如何返回单元格中的多个元素?,swift,parse-platform,tableview,Swift,Parse Platform,Tableview,我想返回单元格的多个元素。我怎么做?这就是我正在研究的代码 // // TableViewControllerCompiti.swift // Secondo B // // Created by Edoardo on 23/12/15. // Copyright © 2015 ERC. All rights reserved. // import UIKit import Parse class TableViewControllerCompiti: UITableViewCont
//
// TableViewControllerCompiti.swift
// Secondo B
//
// Created by Edoardo on 23/12/15.
// Copyright © 2015 ERC. All rights reserved.
//
import UIKit
import Parse
class TableViewControllerCompiti: UITableViewController {
var selfTable: NSMutableArray = NSMutableArray()
@IBOutlet var MessageTable: UITableView!
@IBOutlet weak var Compiti: UILabel!
@IBOutlet weak var DescrizioneCompiti: UITextView!
@IBOutlet weak var DataCompiti: UILabel!
var messagesArray: [String] = [String]()
var descriptionArray: [String] = [String]()
var dateArray: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
func retrieveMessages() {
let query = PFQuery(className: "Compiti")
query.findObjectsInBackgroundWithBlock {
(remoteObjects: [PFObject]?, error: NSError?) -> Void in
for messageObject in remoteObjects! {
let messageText: String? = (messageObject as PFObject) ["Materia"] as? String
let descriptionText: String? = (messageObject as PFObject) ["Compiti"] as? String
let date: String? = (messageObject as PFObject) ["Data"] as? String
if messageText != nil {
self.messagesArray.append(messageText!)
}
if descriptionText != nil {
self.descriptionArray.append(descriptionText!)
}
if date != nil {
self.dateArray.append(date!)
}
}
self.MessageTable.reloadData()
}
}
retrieveMessages()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = UITableViewCell?()
cell = tableView.dequeueReusableCellWithIdentifier("cell")
Compiti.text = self.messagesArray[indexPath.row]
DataCompiti.text = self.dateArray[indexPath.row]
DescrizioneCompiti.text = self.descriptionArray[indexPath.row]
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "ReUseCell")
}
return cell!
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.messagesArray.count
}
}
当我运行它时,模拟器只返回一堆空单元格。如何返回元素?代码中的备注:
- 您不能在viewDidLoad()内部实现和调用函数,您实现生命周期之外的所有函数/方法,然后在内部调用
- 我认为使用三个不同的数组来包含数据不是一个好主意,您应该学习
或struct
数据结构来对数据进行分组,因为您从同一个类中获取数据class
struct myDataContainer { var message:String? var descriptionText:String? var date:String? } var arrayOfContainers = [myDataContainer]() //<-- this will be your new array
struct myDataContainer { var消息:字符串? 变量descriptionText:字符串? 变量日期:字符串? }
var arrayOfContainers=[myDataContainer]()//您有多少个原型单元?它们的可重用标识符是什么?您是否有用于单元格的自定义类?另外,您不应该在
中有函数,因为我正在从Parse获取信息,所以单元格的数量取决于Parse数据库中的行数。它们的可重用标识符是viewdiload
。不,我没有任何自定义类@阿拉法特单元
、Compti
和descriptionecompiti
是否是原型单元中的组件?首先,您应该创建一个自定义的DataCompiti
,并将插座连接到您创建的自定义单元格,而不是在viewcontroller上。返回行数时,tableViewCell
的值是多少?(你最好有一个对象数组,每个对象包含三个字符串,而不是三个字符串数组。想象一下,如果你收到的消息文本没有匹配的描述,会发生什么!)你能告诉我(在回答中)我该怎么做吗@PhillipMills此代码给了我一个self.messagesArray.count
错误。我做错了什么@拉玛尔他们的问题是“拉玛尔是最后一幅图像”拉玛尔线程1:断点1.1
class CustomizeCell :UITableViewCell { @IBOutlet weak var Compiti: UILabel! @IBOutlet weak var DescrizioneCompiti: UITextView! @IBOutlet weak var DataCompiti: UILabel! } //<--- Subclass of UITableViewCell above struct myDataContainer { var message:String? var descriptionText:String? var date:String? } class TableViewControllerCompiti: UITableViewController { var arrayOfContainers = [myDataContainer]() //<-- this will be your new array override func viewDidLoad() { super.viewDidLoad() retrieveMessages() //<--- call function } func retrieveMessages() { var objectT = myDataContainer() let query = PFQuery(className: "Compiti") query.findObjectsInBackgroundWithBlock {(objects: [PFObject]?, error: NSError?) -> Void in if let remoteObjects = objects { for messageObject in remoteObjects { let messageText = messageObject["Materia"] as? String let description = messageObject["Compiti"] as? String let date = messageObject["Data"] as? String objectT.message = messageText! objectT.descriptionText = description! objectT.date = date! self.arrayOfContainers.append(objectT) } self.tableView.reloadData() } } } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomizeCell // as! CustomizeCell technically speaking make sure that we access our customize cell let data = self.arrayOfContainers[indexPath.row] cell.Compiti.text = data.message cell.DataCompiti.text = data.descriptionText cell.DescrizioneCompiti.text = data.date return cell } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.arrayOfContainers.count } }