我有2个不同的UITableViews,显示用户可以在应用上发布的帖子。我正在使用Parse Framework在云上获取该信息。
在我的第一个TableView上工作之后,它运行得很好,所以我回收了这些代码并对其进行了修改,以便它可以使用不同的UITableView来显示来自数据库中不同表的数据。
第一个UITableView正如预期的那样工作,但第二个不是,即使代码几乎相同,唯一改变的是它从中获取数据的表。
以下是我用于从云端获取数据并在应用程序上显示的代码:
@IBAction func loadData() {
timelineData.removeAllObjects()
var findTimelineData:PFQuery = PFQuery(className: "posts")
findTimelineData.orderByAscending("createdAt")
findTimelineData.findObjectsInBackgroundWithBlock{
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil{
for object in objects!{
let post:PFObject = object as! PFObject
self.timelineData.addObject(post)
}
let array:NSArray = self.timelineData.reverseObjectEnumerator().allObjects
self.timelineData = NSMutableArray(array: array)
self.tableView.reloadData()
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBarHidden = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
//return # of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//# of elements in the timeLineData array
return timelineData.count
}
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell {
let cell:TableViewCell = tableView!.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath!) as! TableViewCell
let post:PFObject = self.timelineData.objectAtIndex(indexPath!.row) as! PFObject
cell.postTextView.alpha = 0
cell.usernameLabel.alpha = 0
cell.timestampLabel.alpha = 0
cell.postTextView.text = post.objectForKey("content") as! String
var dataFormatter:NSDateFormatter = NSDateFormatter()
dataFormatter.dateFormat = "yyyy-MM-dd HH:mm"
cell.timestampLabel.text = dataFormatter.stringFromDate(post.createdAt!)
// to get username from the post
var showUsername:PFQuery = PFUser.query()!
//the objectID is the same as the user in the two different tables
showUsername.whereKey("objectId", equalTo: post.objectForKey("user")!.objectId!!)
showUsername.findObjectsInBackgroundWithBlock{
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil{
let user = (objects as! [PFUser]).last
cell.usernameLabel.text = user!.username
UIView.animateWithDuration(0.5, animations: {
cell.postTextView.alpha = 1
cell.usernameLabel.alpha = 1
cell.timestampLabel.alpha = 1
})
}
}
return cell
}
对于发生了什么的任何想法?我已经在这里尝试了其他帖子,但没有任何东西可以解决这个问题。
答案 0 :(得分:1)
我明白了。问题出在我的故事板上。我使用的UITextView太大了,无法放入tableView中,因此我猜测它覆盖了单元格的内容,而不是让它在应用程序中显示。
谢谢大家回复!!