除非滚动或触摸单元格,否则UITableView不显示内容

时间:2015-08-14 04:34:39

标签: ios iphone swift uitableview parse-platform

我有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
}

对于发生了什么的任何想法?我已经在这里尝试了其他帖子,但没有任何东西可以解决这个问题。

Cells in UITable Cells in debugger

1 个答案:

答案 0 :(得分:1)

我明白了。问题出在我的故事板上。我使用的UITextView太大了,无法放入tableView中,因此我猜测它覆盖了单元格的内容,而不是让它在应用程序中显示。

谢谢大家回复!!