私はPageMenuをBase ViewControllerを持つCocoapodsから使用しています。サブビューにはPFQueryTableViewControllerの各ページが1ページになっています。queryForTable viewDidAppear、viewWillAppearなどサブビューでは機能しません
問題は、アプリケーションが起動して最初のPFQueryTVC(サブビューとして)を表示するときに、queryForwhere内に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だけでなく、作業を行います。