2016-05-04 10 views
1

私は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だけでなく、作業を行います。

答えて

0

あなたは言う:

問題は、(サブビューとして)最初PFQueryTVC を示したときにアプリが起動し、 query.whereKey(...)がある場合、それは結果が表示されないということですqueryForTable内の関数それはクラッシュしません。

ただし、表示するコントローラは表示するのではなく、表示する必要があります。あるビューコントローラーに別のビューコントローラーを含めて提示させるには、それを行うメカニズムがありますが、ビューを取得してサブビューとして追加するだけでは簡単ではありません。ただし、テーブルビューは、それはあなたがデータソースを設定することを提供する任意のビューコントローラに追加することができ、テーブルビューコントローラに属している必要はありません(多くの場合、あなたはあまりにもデリゲートを設定することになるでしょう)ViewControllerContainment

を参照してください。 。

関連する問題