我通过Cocoapods使用PageMenu,Cocoapods有一个基本的ViewController,子视图有PFQueryTableViewController,每个都是一个页面。
问题是,当应用程序启动并显示第一个PFQueryTVC(作为子视图)时,如果queryForTable中有query.whereKey(…)函数,则不会显示结果。它不会崩溃。
我还注意到viewWillAppear和viewDidAppear不会被调用,但是如果我转到另一个页面然后返回,queryForTable也会工作,viewWillAppear和viewDidAppear也会工作。
以下是我的部分代码:

var city : String = "dallas"

class CouponsTableViewController: PFQueryTableViewController, DisplayAlert {

override init(style: UITableViewStyle, className: String?) {
    super.init(style: style, className: className)
    parseClassName = "Coupons"
    pullToRefreshEnabled = true
    paginationEnabled = true
    objectsPerPage = 25
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    parseClassName = "Coupons"
    pullToRefreshEnabled = true
    paginationEnabled = true
    objectsPerPage = 25
}

override func queryForTable() -> PFQuery {

    let subquery = PFQuery(className: self.parseClassName!)
    subquery.whereKey("city", equalTo: city) // this shows no results
    subquery.whereKey("location", nearGeoPoint: userLocation)

    let subquery2 = PFQuery(className: self.parseClassName!)
    subquery2.whereKey("city", equalTo: "all") // this shows no results
    subquery2.whereKey("location", nearGeoPoint: userLocation)
    let query = PFQuery.orQueryWithSubqueries([subquery, subquery2])
// If Pull To Refresh is enabled, query against the network by default.
    if self.pullToRefreshEnabled {

        query.cachePolicy = .NetworkOnly
    }

    // If no objects are loaded in memory, we look to the cache first to fill the table
    // and then subsequently do a query against the network.
    if self.objects!.count == 0 {
        query.cachePolicy = .CacheThenNetwork
    }

    return query
}

当我转到另一个页面然后返回时,queryForTable可以工作,viewWillAppear和viewdiddear也可以工作。

最佳答案

你说:
问题是当应用程序启动并显示第一个PFQueryTVC时
(作为子视图)如果存在
query.whereKey(…)在queryForTable中起作用。它不会崩溃。
但是视图控制器应该显示而不是显示。如果您希望一个视图控制器包含并呈现另一个视图控制器,有一些机制可以做到这一点,但这并不像获取视图并将其作为子视图添加那样简单。参见ViewControllerContainment
但是,tableview不需要属于tableview控制器,只要设置了数据源,就可以将其添加到任何视图控制器中(在许多情况下,您还需要设置委托)。

关于ios - queryForTable viewDidAppear,viewWillAppear等不适用于 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37016526/

10-09 07:18