如何使原型细胞消失'如果它是空的' (不可点击)

时间:2016-02-23 10:12:26

标签: swift uitableview parse-platform cell

我正在创建一个应用程序,用户可以在x km半径范围内看到某些项目/用户(很像Tinder,您可以在其中设置您想要在您所在区域看到的女孩/家伙的半径)。所以在我的cellForRowAtIndexPath函数中,我决定是否可以显示一个单元格。

如果他在半径范围内,则显示事件。如果位置太远,则不应该使用单元格。

我当前的代码只是隐藏了单元格,但它仍然是可点击的。我希望它首先不使用单元格,但我无法找到如何做到这一点。有什么想法吗?

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> AllGeneralMeetsTableViewCell {
        //get location from backend
        let locLati = object?["coordLat"] as? Double
        let locLongi = object?["coordLong"] as? Double

        let currentLocation:CLLocation = CLLocation(latitude: localLati , longitude: localLongi)
        let meetLocation:CLLocation = CLLocation(latitude: locLati! , longitude: locLongi!)
        let meters:CLLocationDistance = currentLocation.distanceFromLocation(meetLocation)
        // make distance in km
        let distInKm = meters/1000
        //get distance that user has set in his settings
            let cell = tableView.dequeueReusableCellWithIdentifier("GeneralMeetsIdentifier") as! AllGeneralMeetsTableViewCell!
        if (distInKm <= settingsKm) {
        // Extract values from the PFObject to display in the table cel
            if let title = object?["title"] as? String {
                cell?.titleCell?.text = title
            }
            if let message = object?["message"] as? String {
                cell?.messageCell?.text = message
            }
            if let image = object?["image"] as? PFFile {
                image.getDataInBackgroundWithBlock({ (imageData: NSData?,error: NSError?) -> Void in
                    if (error == nil) {
                        let image1 = UIImage(data:imageData!)
                        cell.imageCell.image = image1
                    }
                })

            }

            return cell
        }
        else {
        return cell
        }
    }
}

enter image description here

以下查询返回数据

override func queryForTable() -> PFQuery {
    let query = PFQuery(className: self.parseClassName!)
    let FBID = myUser.objectForKey("facebookID")!
    query.whereKey("facebookID", equalTo: FBID)
    query.whereKey("private", equalTo: "false")
    return query
}

4 个答案:

答案 0 :(得分:1)

您希望在没有数据时使单元格消失。如果我是对的,那么您可以使用名为&#39; DZNEmptyDataSet&#39;显示一些图像告诉用户没有要加载的数据。使用Cocoapods进行安装,或者只是拖动文件并创建桥接头。用法非常简单 - 只需按照GitHub上的文档进行操作即可。

答案 1 :(得分:1)

在你的cellForRowAtIndexPath -

if cell is to be displayed {
    tableView.rowHeight = 120
    //Replace 120 with desired rowHeight
} else {
    tableView.rowHeight = 0
}

希望这会有所帮助: - )

答案 2 :(得分:0)

Parse提供了一个类型PFGeopoint,甚至在查询中也支持它,使用Parse框架你也可以像从数据库下载东西一样获取位置,这样你只能下载那些可用的帖子。他的范围内的用户......

PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint: PFGeoPoint?, error: NSError?) -> Void in if error == nil { //asynchronous, U have access to GPS location // create Parse Query let query: PFQuery = PFQuery(className: "Post") // 5km range query.whereKey("gps", nearGeoPoint: geoPoint, withinKilometers: 5.0) //rest of query.... } else { // dont have access to GPS or whatever print("Eror location: \(error)") } }

答案 3 :(得分:0)

正确的解决方案是从数据源中删除数据,以便首先显示它。但有时这是很多工作。

如果您只想隐藏单元格,可以使用tableView(_:heightForRowAtIndexPath:)委托方法将其设置为零高度:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.row == 1 {
        return 0.0
    }

    return tableView.rowHeight
}