繁体   English   中英

UITableView上的前滚式滚动-iOS

[英]Edgy Scrolling on UITableView - iOS

我正在制作一个从解析数据库填充表视图的应用程序。 问题是,每当我滚动时都会有一些滞后。 通过一些搜索,我发现问题出在cellForRowAtIndexPath()函数中,我在该函数中查询数据库以便获取该单元格标签所需的数据。 我必须在那里查询数据库,因为我使用单元格的位置索引到我的message数组中,以便获取正确的消息。 这是我的cellForRowAtIndexPath()函数的内容:

    if (path.row < messagesArray.count) {
        var message = messagesArray[path.row]
        var dateFormat = NSDateFormatter()
        var query = PFQuery(className: "Messages")
        query.whereKey("messageID", equalTo: message.messageID)
        var first = query.getFirstObject()

        if (message.senderID == loggedInUserID) {
            cell.nameLabel?.text = "I said"
        } else {
            queryO?.whereKey("objectId", equalTo: message.senderID)
            var second = queryO?.getFirstObject()
            var name = second!.objectForKey("FIRST") as! String
            var middle = second!.objectForKey("MIDDLE") as! String?
            var last = second!.objectForKey("LAST") as! String

             if (middle != nil) {
                 cell.nameLabel?.text = name + " " + middle! + " " + last
              } else {
                  cell.nameLabel?.text = name + " " + last
              }
        }

        cell.messageLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
        cell.messageLabel?.text = message.messageText

        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "MM/dd/yyyy 'at' h:mm a" // superset of OP's format
        let str = dateFormatter.stringFromDate(first!.objectForKey("TIME") as! NSDate)

        cell.senderLabel?.text = str
    }

有任何想法吗?

我最终要做的是将查询带到函数之外,并在viewDidLoad()中运行它,从而极大地提高了速度。 感谢您的帮助:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM