我通过Cocoapods使用PageMenu,它有一个Base 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和viewDidAppear。
答案 0 :(得分:0)
你说:
问题是当应用程序启动并显示第一个PFQueryTVC时 (作为子视图)如果有,则不显示结果 query.whereKey(...)函数在queryForTable中。它并没有崩溃。
但应该显示视图控制器而不是显示。如果您希望一个视图控制器包含并呈现另一个视图控制器,那么有一些机制可以做到这一点,但它不仅仅是获取视图并将其添加为子视图。请参阅View Controller Containment
但是,tableview不需要属于tableview控制器,它可以添加到任何视图控制器,只要你设置一个数据源(在很多情况下你也想设置委托)。