2016-05-04 7 views
1

Я использую PageMenu через Cocoapods, у которого есть Base ViewController, и как subviews он имеет PFQueryTableViewController, каждый из которых является одной страницей.queryForTable viewDidAppear, viewWillAppear и т. Д. Не работает с subview

Проблема заключается в том, что, когда приложение запускается и показывает первый PFQueryTVC (как подзаголовок), он не показывает результаты, если есть query.whereKey (...) функции внутри queryForTable. Это не сбой.

Я также заметил, что 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

Однако TableView не нужно принадлежать к контроллеру Tableview, он может быть добавлен к любому виду контроллера при условии, что вы установили источник данных (и во многих случаях вы хотите установить делегат тоже) ,

 Смежные вопросы

  • Нет связанных вопросов^_^