2016-04-01 20 views
0

Üç segmente ve TableView ve CollectionView'a sahip 1 SegmentedControl içeren bir ViewController sahibim. Segment seçildiğinde, ilk iki segment iki farklı özel TableviewCells ile TableView gösterir ve sonuncusu ise CollectionView'i gösterir. Her segmentin seçilmesi, TableView veya CollectionView'ı doldurmak için veri indirmek için ağ işlevlerini çağırır. Uygulama, varsayılan olarak ilk segmentin Tablo Görünümünü gösterir. Sorun, uygulamayı başlattığımda, popülasyon için herhangi bir veri olmadığı için uygulama numberOfItemsInSection işlevinde çöküyor. Bu işlevin veri kaynağı olarak adlandırıldığını ve CollectionView'ün temsilci özelliklerinin 'self' (ViewController) olarak ayarlandığını düşünüyorum. Bu sorunu çözmek için nasıl yaklaşmalıyım? bir kere, sonraUITableView ve UICollectionView içeren UISegmentedControl

class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate { 
// note that I would recommend separating these into extensions on ViewController 

    var htmlResponses = []() 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return htmlResponses.count 
     // htmlResponses is empty at this point 
    } 

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     return htmlResponses.count 
     // htmlResponses is empty at this point 
    } 
} 

: Başlangıçta şöyle hiçbir içeriğe sahip masa ve toplama görünümlerini belirleme böylece

cevap

1

Ok, bu nedenle muhtemelen bir JSON sözlüğüne veya bir diziye bu verileri indiriyorsunuz Verileriniz gelir, sadece htmlResponses dizisini söz konusu verilerle doldurun ve tablo görünümleriniz ve koleksiyon görünümünüz için sırasıyla tableView.reloadData() ve collectionView.reloadData()'u arayın.

Verilerinizi depolamak için dizileri kullanmasanız bile, kavram aynıdır. Görünümlerinizi doldurmak ve verilerin sunucudan geldiğini öğrendikten sonra yeniden yüklemek için boş öğeleri kullanın.

+0

oh..Teşekkürler. Dizi değişkenimi böyle açıkladığımı unuttum. ex) var htmlResponse: [Sınıf tipi]! Onu değiştirdim ve şimdi çalışıyor. – woogii